例如,我有以下一段代码:
string str;
int i;
cout<<"input:";
cin>>str;
cout<<"integer:";
cin>>i;
这段代码实际上并没有什么问题,但是如果我将一些文本粘贴到“输入”中的命令提示符中,它会自动将一些复制的文本填充为“整数”。我该如何解决这个问题?
编辑:我可以随意输入文本,但是当我复制文本时会出错。我不知道为什么。
我猜,您的文本包含空格。所以,std::cin
不会在这里工作。改为使用std::getline
。
std::string str;
std::getline( std::cin, str );
还有第三个参数std::getline
-delimiter。默认情况下,它是新行字符。
如果您的文本确实包含换行符,那么这将不起作用。您有 2 个选项:
std::getline
std::getline
从用户输入( )中逐行(使用 )读取std::cin
并查找一些特殊的字符串,这将告诉您的程序文本在哪里结束。没有其他方法可以知道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;