我有例如下面的一段代码:字符串输入复制的文本
string str;
int i;
cout<<"input:";
cin>>str;
cout<<"integer:";
cin>>i;
其实没有什么不对的代码,但如果我粘贴在“输入”一些文本进入命令提示符,它会自动将一些复制的文本填充到“整数”中。我该如何解决这个问题?
编辑:我可以键入文本只要我想,但是当我复制文本它出错了。我不知道为什么。
我有例如下面的一段代码:字符串输入复制的文本
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
- 分隔符。默认情况下,它是新的一行字符。
如果您的文本确实包含新的行字符,则此操作无效。你有两个选择:
std::getline
)从用户输入(std::cin
)的线把它作为std::getline
我其实已经试过了,但仍然是同样的问题 – Badshah 2012-08-06 10:14:49
@Badshah - 然后你的文本里面有新的行。看我的编辑。 – 2012-08-06 10:17:18
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;
您的复制文本是否包含行返回? – ereOn 2012-08-06 10:09:54
你可以给你提示你在提示符下“粘贴”的样本吗?请使用正确和不正确的输入会话编辑您的问题。 – 2012-08-06 10:10:22
@ ereOn:是的它的确如此 – Badshah 2012-08-06 10:13:40