#include <iostream>
#include <string>
using namespace std;
int main()
{
string word1;
cout << "\nEnter a string : ";
getline(cin, word1);
string word2 = word1;
int size = word2.size();
char word3[20];
int y = 0;
for (int x = size - 1; x >= 0; x--)
{
word3[y] = word2[x];
y++;
}
if (word1 == word3)
{
cout << "\nOutput: 1";
}
else
{
cout << "\nOutput: 0";
}
system("pause");
return 0;
}
此代码允许用户输入单词,如果单词是回文,则计算机会自动输入。它通过接受这个词并向后瞄准它来做到这一点。然后将它与原始单词进行比较。我已经使用断点调试了我的代码,并且autos,local和watch窗口以及word2的最后一个字母被分配给word3的第一个字母(应该如此)。但是在整个过程之后,word3仍然充满了一堆疯狂的角色你不会看到你是否只是将word3打印到屏幕上(如果原来的单词是“你好”它会给另一个字符串“ollehÍÍÍÍÍÍÍÍÍÍ.. “)。因此,计算机认为原始词和原始词不一样(即使它们是)。问题:如何摆脱字符串中的这些“ÍÍÍÍÍÍ...”字符。 (我使用了c风格的字符串,因为字符串对象附带了它自己的一系列复杂功能。它说了一些关于subcipt被超出的内容,只有当我使用等于我输入的单词中字符数量的空格来初始化它时才会工作。)
答案 0 :(得分:2)
这些“有线字符”来自未清除的缓冲区。
char word3[20] = { };
你应该没事。