0

例如,我有以下一段代码:

string str;
int i;
cout<<"input:";
cin>>str;
cout<<"integer:";
cin>>i;

这段代码实际上并没有什么问题,但是如果我将一些文本粘贴到“输入”中的命令提示符中,它会自动将一些复制的文本填充为“整数”。我该如何解决这个问题?

编辑:我可以随意输入文本,但是当我复制文本时会出错。我不知道为什么。

4

2 回答 2

3

我猜,您的文本包含空格。所以,std::cin不会在这里工作。改为使用std::getline

std::string str;
std::getline( std::cin, str );

还有第三个参数std::getline-delimiter。默认情况下,它是新行字符。


如果您的文本确实包含换行符,那么这将不起作用。您有 2 个选项:

  • 找到唯一的字符,可以用作分隔符并将其作为第三个参数传递std::getline
  • std::getline从用户输入( )中逐行(使用 )读取std::cin并查找一些特殊的字符串,这将告诉您的程序文本在哪里结束。没有其他方法可以知道integer 从哪里开始(除非文本是固定大小的,但我对此表示怀疑)
于 2012-08-06T10:10:21.303 回答
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;
于 2012-08-06T10:10:19.150 回答