测试代码如下:
cout << "Enter a string : "; // "Hello World"
char str1[5];
char str2[5];
cin >> str1;
cout << "str1 : " << str1; // "Hello"
cin >> str2;
cout << "\nstr2 : " << str2; // "World"
修改后:
cout << "Enter a string : "; // "Hello World"
char str1[5];
char str2[5];
cin >> str1;
cin.get();
cin >> str2;
cout << "str1 : " << str1 << "\nstr2 : " << str2; // str1输出为空,str2 : World
是什么原因导致str1输出为空???
std::cin >> str
,str 为字符数组 或 字符指针,将执行以下操作:问题中的
str1
是含有 5 个字符的数组,而输入字符串 “Hello” 也是含有 5 个字符,所以,当在str1
后添加\0
时,会越界,导致未定义的行为,所以,应该将数组字符串长度变大,或者将输入字符串变小,以避免未定义的行为