我以两种不同的方式使用cin :一种方式是使用cin (重载)>>变量,另一种方式是使用一个名为read的函数,该函数接受一个istream。
我有的代码是:
cin >> string6;
cout << string6;
string7.read(cin);
cout << string7;我认为我遇到的问题是,string6在cin中剩下的内容都用于string7 (如果我读入"Hello“,后面跟着^D^D来表示输入的结束,我非常确定^D正在被读入string7),所以我不能用string7 7.read()读取用户输入。如何解决此问题?
编辑: String 6/String 7是我的String()类的变量,read是String的成员函数。
发布于 2014-02-08 14:57:54
我没有你的代码,所以我不能测试它,但这可能会起作用:
istream& ignore ( streamsize n = 1, int delim = EOF );从输入序列中提取字符并将其丢弃。
cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');发布于 2014-02-08 15:02:43
"cin >>“将一直读到下一个换行符。您可以使用cin.ignore()删除字符。您还可以使用cin.peek()来检查当前流的前端是什么。
所以,
if( cin.peek() == '^D' )
{
cin.ignore();
}将“^D”替换为实际代码。你也可以像这样做
while( !isalpha( cin.peek() ) )
{
cin.ignore();
}以确保cin从字母字符开始。
https://stackoverflow.com/questions/21642807
复制相似问题