回文程序和 C 样式字符串中不需要的字符

Palindrome program & unwanted chars in c-style string

本文关键字:不需要 字符 字符串 样式 程序 回文      更新时间:2023-10-16
#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打印到屏幕上,则不会看到这些字符(如果原始单词是"hello",则会给出另一个字符串"ollehÍÍÍÍÍÍÍÍÍÍ…")。正因为如此,计算机认为最初的单词和第一个单词不一样(即使它们是一样的)。问题:我如何摆脱这些"ÍÍÍÍÍÍ…"字符在我的字符串。(我使用c风格的字符串,因为字符串对象有它自己的一套复杂性。它表示超出了下标,并且只有当我将其初始化为与我要输入的单词中的字符数量相等的空格时才有效。"

这些'有线字符'来自未清除的缓冲区。

char word3[20] = {  };

你会没事的