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”

方案二:

int main(){
    char s[] = "Hello World";
    cout << "The entered String is\n";
    cout << s << "\n";
    return 0;
}  

在这种情况下,我得到“Hello World”的输出。

这两个程序有什么区别?逻辑是一样的吗?通过命令行输入时如何获取整个字符串“Hello World” ?有办法吗?

4

2 回答 2

4

使用getline()

string s;
getline(cin, s);
cout << "The entered String is\n";
cout << s << "\n";

您的代码的问题是输入流提取运算符>>只能将字符获取到下一个空格(因此,只有一个“单词”)。该getline()函数获取整行。

于 2012-11-19T21:30:24.263 回答
0

在您的第一个代码片段中,您的数组只有 10 个字符长。输入 hello world 会溢出数组并且发生不可预知的事情。

于 2012-11-19T21:31:13.503 回答