C ++从递归函数打印奇怪的字符
C++ prints strange character from recursive function
我想创建一个函数,给定一个字符串,在每个字符之间放置“*”。
例如:
你好---> h*e*l*l*o
using namespace std;
string allStar(string str, int n)
{
if (str.at(n + 1) == '.') {
return string(1, str.at(n));
}
return str.at(n) + "*" + allStar(str, n + 1);
}
int main()
{
string str;
cout << "Input word: ";
cin >> str;
str = str + ".";
cout << allStar(str, 0);
return 0;
}
输入单词:你好
然后我得到:
��������o
str.at(n) + "*"
表示 "take a pointer to string literal "*"
, and offset it by the number that happens to be an ASCII code of the character str.at(n)
"。然后,您的程序通过越界访问索引表现出未定义的行为。
我想创建一个函数,给定一个字符串,在每个字符之间放置“*”。
例如:
你好---> h*e*l*l*o
using namespace std;
string allStar(string str, int n)
{
if (str.at(n + 1) == '.') {
return string(1, str.at(n));
}
return str.at(n) + "*" + allStar(str, n + 1);
}
int main()
{
string str;
cout << "Input word: ";
cin >> str;
str = str + ".";
cout << allStar(str, 0);
return 0;
}
输入单词:你好
然后我得到: ��������o
str.at(n) + "*"
表示 "take a pointer to string literal "*"
, and offset it by the number that happens to be an ASCII code of the character str.at(n)
"。然后,您的程序通过越界访问索引表现出未定义的行为。