我正在使用C ++中的字符串。我最近在输入字符串时遇到了问题。我正在使用cin >> string;
将我的字符串作为用户输入。当用户在字符串中输入空格时,下一个输入会自动填写剩余的字母,或者有时会留空。由于下一个输入字符串通常是整数,这将导致令人不快的错误。对此有什么好的解决方法?
编辑:这是当前的代码:
cout << "Please print the enemy's name: ";
getline(cin, enemyName);
答案 0 :(得分:7)
您可能希望在用户按Enter键之前将所有输入都输入到字符串中。在这种情况下,可以说你真正想要的是阅读文本的“线”。为此,您可以使用std::getline
,如下所示:
std::getline(cin, enemyName);
假设enemyName被定义为std :: string。如果敌人的名字是c风格的charater数组,你想要使用cin.getline,如下所示:
cin.getline(enemyName, sizeof(enemyName));
但是,尽量避免在C ++中使用C风格的字符数组。
答案 1 :(得分:3)
&gt;&gt;的行为字符串是故意的;它将空白字符解释为停止的分隔符,所以它最好是扼杀单词。默认情况下,std :: getline()(#include&lt; string&gt;)使用'\ n'作为分隔符,但是如果需要,还有一个std :: getline()版本,它带有一个自定义分隔符。
答案 2 :(得分:2)
改为使用getline(cin, string);
。
答案 3 :(得分:2)
使用getline()
一次读取整行。
getline (cin, string);