打印通过标准输入输入的整个字符串

时间:2012-11-19 21:26:43

标签: c++ string g++

为什么同一程序在通过不同方法提供输入时会给出不同的输出?

计划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”?有办法吗?

2 个答案:

答案 0 :(得分:4)

使用getline()

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

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

答案 1 :(得分:0)

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