c++ - 如何将文本文件中的数据分配到结构C++中
问题描述
我想将文件的内容分配到结构中,但我不断收到此错误,如果有人知道如何将数据逐行分配到结构数组中,请告诉我。
error: invalid operands to binary expression ('basic_ostream<char, std::__1::char_traits<char> >' and 'const char [2]')
我不知道是什么问题。这是代码:
#include <cstdlib>
#include <filesystem>
#include <fstream>
#include <iostream>
#include <istream>
#include <ostream>
using namespace std;
struct StudentInfo {
char fname[30];
char lname[30];
int id;
char address[30];
char PhoneNumber[20];
};
void read_file() {
ifstream data("text.txt");
StudentInfo array[11];
if(!data.fail) {
int i;
for(int i = 0; i <= 11; i++) {
data >> array[i].fname;
data >> array[i].lname;
data >> array[i].id;
data >> array[i].address;
data >> array[i].PhoneNumber;
}
for(int i = 0; i <= 11; i++) {
cout << array[i].fname >> " " << array[i].lname << " " << array[i].id >>
" " << array[i].address >> " " << array[i].PhoneNumber;
}
}
}
void print_student(StudentInfo s) {
cout << s.fname >> " " << s.lname >> " " << s.id >> " " << s.address >>
" " << s.PhoneNumber;
}
void search(StudentInfo array[]) {
int sid;
// string last;
cout << "Enter id";
cin >> sid;
for(int i = 0; i < 1000; i++) {
if(array[i].id == sid) {
print_student(array[i]);
}
}
}
int main() {
StudentInfo array[11];
read_file();
search(array);
return 0;
}
解决方案
这个说法
cout<<array[i].fname>>" "<<array[i].lname<<" "<<array[i].id>>" "<<array[i].address>>" "<<
array[i].PhoneNumber;
没有意义。事实上,由于在这部分使用了两个运算符 << 和 >>
cout<<array[i].fname>>" "
你的陈述
std::cout >> " "
但是没有为输出流 std::cout 定义运算符 >>。
看来你的意思
cout<<array[i].fname << " "
^^^
在语句中您错误地使用运算符 >> 的任何地方。
请注意,如果您有一个包含 11 个元素的数组
StudentInfo array[11];
那么索引的有效范围是[0, 11 )
。那就是使用索引 11 您正在访问数组之外的内存。
for(int i = 0; i <= 11; i++) {
data >> array[i].fname;
//...
推荐阅读
- javascript - 使用 observables 为顺序动画制作可取消的 setTimeouts
- python - 当用户在应用程序中嵌入的交互式绘图上选择值时,如何暂停 tkinter 应用程序
- python - matplotlib 图表缩小 tkinter 窗口
- google-apps-script - 谷歌脚本超时
- excel - Excel FILTER() 为空白单元格返回 0
- r - 根据R中不同的运行长度替换连续的重复值
- java - 使用 mongoDB 启动 H2 DB
- c - C代码有问题,我正在寻找最大值和最小值
- azure - 在 WSL 中配置本地 Azure ML 目标?
- testing - Manim没有输出任何东西