首页 > 解决方案 > C++ char 数组赋值

问题描述

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

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

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

我期望:ABCDEFGHIJKLMNOPQRSTUVWXYZ

实际结果:ABCDEFGHIJKLMNOPQÿÿÿÿVWXYZ

标签: c++arrayschar

解决方案


问题在于这一行:

char alf[] = "";

您声明大小为 1 的 char 数组,它只能保存空字符串(空终止符)。请注意,std::istream::operator>>withchar *不验证数组的大小(它不能),因此您将未定义的行为写入数组而超出范围。解决方案是使用std::string它将根据需要增长。

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

推荐阅读