字符串添加期间的未知字符

Pau*_*aul 0 c++

最近开始自学C++,上网找了些挑战。我发现了一个挑战,需要我将字符串的每个字符都加倍。(例如:“abcd”->“aabbccdd”)

我做了一个简单的程序:

#include <iostream>
using namespace std;

string doubleChar(string str) {
    string result = "";
    for (int i=0; i<str.length(); i++){
        result += str[i] + str[i];
    }
    return result;
}

int main()
{
    string stuff = "Example Text";
    cout << doubleChar(stuff);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望"EExxaammppllee TTeexxtt",或者至少是如果代码错误我可以推断出错误的结果。但是,当我运行下面的代码时,得到了一个相当奇怪的结果:"è??????@¿???"

我对 C++ 真的很陌生,对它一无所知,所以我不知道在线谷歌什么。我尝试搜索“在 C++ 中添加字符串时的奇怪字符”或类似的东西,但找不到任何东西。我怀疑它可能与str[i] + str[i]

提前致谢

joh*_*ohn 8

str[i] + str[i]添加两个字符。由于无法以正常方式添加字符,因此首先将它们转换为整数(例如,使用 ASCII 编码)。然后将生成的整数转换回无意义的字符以附加到您的字符串中。

这是一个有效的版本,它避免了添加两个字符的问题。

for (int i=0; i<str.length(); i++){
    result += str[i];
    result += str[i];
}
Run Code Online (Sandbox Code Playgroud)

你很不幸。你写的东西在许多语言中都可以使用,只是不能在 C++ 中使用。