我有以下代码:
string str;
int i;
cout<<"input:";
cin>>str;
cout<<"integer:";
cin>>i;
这段代码实际上没有任何问题,但是如果我在“input”中将一些文本粘贴到命令提示符中,它会自动将一些复制的文本填充到“整数”中。我该如何解决这个问题?
编辑:我可以根据需要输入文本,但是当我复制文本时,它会出错。我不知道为什么。
答案 0 :(得分:3)
我想,你的文字包含空格。所以,std::cin
在这里不起作用。请改用std::getline
。
std::string str;
std::getline( std::cin, str );
第三个参数是std::getline
- 分隔符。默认情况下,它是新行char。
如果你的文字确实包含新的行号,那么这将不起作用。您有两个选择:
std::getline
std::getline
)逐行读取(使用std::cin
)并查找一些特殊字符串,它将告诉您的程序文本结束的位置。没有其他方法可以知道int
eger从哪里开始(除非文本具有固定大小,但我对此表示怀疑)答案 1 :(得分:0)
string str;
int i;
cout<<"input:";
getline(cin, str);
// you want to read the whole line, operator>> will read until whitespace
cout<<"integer:";
cin>>i;