字符串输入复制的文本

string input copied text

本文关键字:文本 复制 输入 字符串      更新时间:2023-10-16

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

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

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

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

我猜,你的文本包含空格。所以,std::cin在这里行不通。请改用std::getline

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

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


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

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