【发布时间】:2020-11-03 07:17:31
【问题描述】:
我尝试过使用 cin.ignore();而不是虚拟变量,没有帮助。文件内容如下:
D姓名姓氏
名字2姓氏2
...
学生人数未知。
...
输出应如下所示:
姓名姓氏:D
Name2 Surname2 等级:A
但我的输出会像这样:
命名A类
姓氏S类
Name2 E 类
urname2 S 类 ...
代码如下:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream file("students.txt");
if (!file.is_open())
{
cout << "file can't be opened!" << endl;
exit(-1);
}
char classs;
string name, dummy;
while(file >> classs >> name)
{
cin.get(classs);
getline(cin, dummy);
getline(cin, name);
cout << name << " " << "calass " << classs << endl;
}
}
【问题讨论】:
-
同一个变量有多个输入操作。请将其减少为minimal reproducible example。提供最小输入数据(或使用
stringstream)、实际输出和预期输出。作为这里的新用户,也可以使用tour 并阅读How to Ask。 -
您的输入中真的有空行吗?你为什么从
cin读取,覆盖从文件中读取的内容? -
按照您的方式混合两种输入方式并不是一个好主意。只需让您的循环将每一行读取为字符串:
while(getline(file, line)),然后将其放入std::istringstream并读出值。