C ++ char数组值分配

时间:2018-12-21 14:37:51

标签: c++ arrays char

我正在尝试将字母保留在char数组中。但是有4个字母显示出荒唐的人物。

我使用F11按钮逐步运行程序。写下字母,然后在“ Q”之后,直到我写下的“ V”为止,它都显示...PQÿÿÿÿVWXYZ这个字符:'ÿ'

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

我希望:ABCDEFGHIJKLMNOPQRSTUVWXYZ

实际结果:ABCDEFGHIJKLMNOPQÿÿÿÿVWXYZ

1 个答案:

答案 0 :(得分:1)

问题在于这一行:

char alf[] = "";

您声明大小为1的char数组,该数组只能容纳空字符串(空终止符)。请注意,std::istream::operator>>char *不能验证数组的大小(它不能验证),因此您将获得Undefined Behavior写入数组,超出范围。解决方案是使用std::string代替,它将根据需要增长。

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