为什么同一程序在通过不同方法提供输入时会给出不同的输出?
计划1:
int main(){
char s[10];
cout << "Enter a String\n";
cin >> s;
cout << "The entered String is\n";
cout << s << "\n";
return 0;
}
当我通过命令行“Hello World”输入时,我得到的输出只是“Hello”
计划2:
int main(){
char s[] = "Hello World";
cout << "The entered String is\n";
cout << s << "\n";
return 0;
}
在这种情况下,我得到“Hello World”的输出。
两个项目有什么区别?逻辑是一样的吗?通过命令行输入时,如何获取整个字符串“Hello World”?有办法吗?
答案 0 :(得分:4)
使用getline()
:
string s;
getline(cin, s);
cout << "The entered String is\n";
cout << s << "\n";
您的代码的问题在于输入流提取运算符>>
仅将字符提取到下一个空格(因此,只有一个“单词”)。 getline()
函数获取整行。
答案 1 :(得分:0)
在您的第一个代码段中,您的数组只有10个字符长。输入hello world会溢出数组并发生不可预测的事情。