无法正确获取文件中的内容
Can't correctly get content from a file
struct data
{
int record;
string fName;
string lName;
string phoneNum;
};
string line, lastname, firstname, phone;
vector<data> readContent()
{
inFile.open("data.txt");
vector<data> myData;
char recordstring[4];
data datas;
inFile.clear();
while(inFile >> recordstring)
{
int records;
records = atoi(recordstring);
datas.record = records;
getline(inFile, firstname, ' ');
datas.fName = firstname;
getline(inFile, lastname, ' ');
datas.lName = lastname;
getline(inFile, phone, 'n');
datas.phoneNum = phone;
myData.push_back(datas);
}
inFile.close();
return myData;
}
这是输入文件(数据.txt(:
1000 Q Q 1
1001 W W 2
1002 e e 3
1003 R R 4
1004吨 5
下面是调试器为文件中的第一行显示的内容:
https://i.stack.imgur.com/IjhCc.png
谁能看出它有什么问题?
它应该是 1000 作为记录,q 代表 fname,q 代表 lname,1 代表音素(对于第一行(。 我所做的只是将每一行存储在结构实例(数据(中,然后将其存储到一个向量中以供以后使用。
如果您想逐字逐句地从文件中读取,请继续使用 >>
.如果你想逐行阅读,请使用 std::getline
,但不要以这种方式混合这两者。
- 宣布
char recordstring[4]
- 尝试使用
std::cin >> recordstring
初始化它 - 尝试使用
atoi
将其转换为int
。而用于填充 int
类型的变量的简单>>
就可以了。请注意,recordstring
的大小为 4,足以容纳 3 个字符 + 以 null 结尾的' '
实际上,整个阅读可以很简单:
vector<data> myData;
data d;
while(inFile >> d.record >> d.fName >> d.lName >> d.phoneNum) {
myData.push_back(d);
}
inFile >> recordstring
不消耗尾随空格,因此第一个 getline(( 调用返回一个空字符串,因为它使用的第一个字符是空格。
如果文件格式如图所示固定,只需执行以下操作:-
while(inFile >> datas.record >> datas.fName >> datas.lName >> datas.phoneNum)
myData.push_back(datas);
您的逻辑似乎跳过了空格recordstring
相关文章:
- C++ - 忽略并从其他文件获取数据
- 为什么从文件获取图标时应用程序有时会崩溃?
- 如何在 c++ 窗口中将参数和返回的退出值传递到批处理文件/从批处理文件获取返回的退出值
- Qt .pro 文件获取 Qtkit 名称
- 提升属性树:如何使用xml文件获取子树的子级
- 从C 中的二进制文件获取整数值时
- 如何在Windows上绕过主机文件获取真实的IP地址
- 如何使用 CPP/C# 从 VHDX 文件获取文件(或文件系统)
- 从读取到对象指针数组的文件获取段错误
- 是否可以从IOS项目中的cpp文件获取文件路径
- 将数据从头文件获取到源文件中的非成员函数中
- 从两个不同的文件获取输入时,输入会发生变化
- 从文件 C++ 获取整数
- 通过在 C++ 中使用发布模式二进制文件获取崩溃原因
- C++ 将值从文件获取到数组中
- 使用HTTP上载文件.获取错误:-HttpSendReuest 12005
- 正在从外部文件获取输入
- 读/写同一个文件(获取gmon.out)
- 从二进制文件获取输入时发生访问冲突错误
- 从特定文件获取函数指针