2011-11-28 40 views
1
#include <iostream> 
using namespace std; 

void main(){ 
    char name[20]; 
    cin>>name;   // when I input "This is" 
    cout<<name<<endl; // output was "This" 
} 

如何做,当我输入“这是”,输出也将是“这是”,而不是“这个”?C++字符变量2字

+3

千万不要将'operator >>'直接用于字符数组,你可以打开缓冲区溢出。 –

回答

6

你可以使用

cin.get(name, 20); 

cin.getline(name, 20); 

根据您是否想在你的字符串中的换行字符。

编辑:

如果您想进一步简化您的代码,你可以使用,而不是一个字符数组的字符串,你就不必担心用户超过您的缓冲区大小,则即。

string name; 
getline(cin, name); 
cout << name << endl; 

编辑2:

当大卫赫弗南还评论指出,我应该解释为什么预期它不为你工作。提取操作符(operator >>)在到达空白字符(在您的案例中为空格)时结束。当到达空字符或文件末尾时,运算符也会终止。

+0

我认为如果你的答案能够提供很好的建议,你就回答了为什么只有一个词正在阅读的问题,你的答案将会得到改善。然后我可以删除我的答案。 –

+0

@DavidHeffernan:我添加了一个解释。谢谢:) – GWW

+0

谢谢,我现在删除了我的答案,因为我相信它现在不会提供超出你的内容的东西。 –