C++字符数组值赋值

C++ char array value assignment

本文关键字:赋值 数组 字符 C++      更新时间:2023-10-16

>我试图将字母表保存在字符数组中。但是有4个字母显示了荒谬的字符。

我使用 F11 按钮逐步运行程序。写了字母表,在"Q"之后,直到"V"我写什么,它都显示......PQÿÿÿÿVWXYZ 这个字符: 'ÿ'

    int main()
    {   
    cout << "ALPHABET:";
    char alf[] = "";
    cin >> alf;
        system("PAUSE");
    }

我期望: ABCDEFGHIJKLMNOPQRSTUVWXYZ

实际结果: ABCDEFGHIJKLMNOPQÿÿÿÿÿVWXYZ

问题出在以下行:

char alf[] = "";

您声明大小为 1 的 char 数组,该数组只能容纳空字符串(空终止符)。请注意,std::istream::operator>> with char * 不会验证数组的大小(它不能),因此您将未定义的行为写入数组,并且没有边界。解决方案是改用std::string,它将根据需要增长。

int main()
{   
    std::cout << "ALPHABET:";
    std::string alf;
    std::cin >> alf;
    std::cout << alf << std::endl;
}