字符串输入复制文本

时间:2012-08-06 10:08:04

标签: c++ string

我有以下代码:

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

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

编辑:我可以根据需要输入文本,但是当我复制文本时,它会出错。我不知道为什么。

2 个答案:

答案 0 :(得分:3)

我想,你的文字包含空格。所以,std::cin在这里不起作用。请改用std::getline

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

第三个参数是std::getline - 分隔符。默认情况下,它是新行char。


如果你的文字确实包含新的行号,那么这将不起作用。您有两个选择:

  • 找到唯一的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;