#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字
#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字
你可以使用
cin.get(name, 20);
或
cin.getline(name, 20);
根据您是否想在你的字符串中的换行字符。
编辑:
如果您想进一步简化您的代码,你可以使用,而不是一个字符数组的字符串,你就不必担心用户超过您的缓冲区大小,则即。
string name;
getline(cin, name);
cout << name << endl;
编辑2:
当大卫赫弗南还评论指出,我应该解释为什么预期它不为你工作。提取操作符(operator >>
)在到达空白字符(在您的案例中为空格)时结束。当到达空字符或文件末尾时,运算符也会终止。
我认为如果你的答案能够提供很好的建议,你就回答了为什么只有一个词正在阅读的问题,你的答案将会得到改善。然后我可以删除我的答案。 –
@DavidHeffernan:我添加了一个解释。谢谢:) – GWW
谢谢,我现在删除了我的答案,因为我相信它现在不会提供超出你的内容的东西。 –
千万不要将'operator >>'直接用于字符数组,你可以打开缓冲区溢出。 –