为什么我的字符串值存储我的结构中的所有字符数组?
Why my string value store all char arrays from my struct?
我正在读取包含以下数据的文件:
0001 Howard Paredes Zegarra Computacion
0002 Penny Vargas Cordero Industrial
0003 Sheldon Cooper Quizpe Mecatronica
我的cpp文件是这样的:
struct Alumno {
char codigo[5];
char nombre[12];
char apellidos[20];
char carrera[15];
};
istream& operator >> (istream &stream, Alumno &record)
{ stream.read(record.codigo, 5);
stream.read(record.nombre, 12);
stream.read(record.apellidos, 20);
stream.read(record.carrera, 15);
stream.get();
return (stream);
}
vector<Alumno> load() {
ifstream file("datos.txt");
vector<Alumno> students;
while (!file.eof()) {
Alumno student = Alumno();
file >> student;
students.push_back(student);
}
file.close();
return (students);
}
int main() {
auto students = load();
for (auto student : students) {
string nombre = student.nombre;
cout << nombre << endl;
}
return (0);
}
所以问题是当打印变量 "nombre" 时打印整行减去第一列。
预期输出:
Howard
Penny
Sheldon
但是当前输出是:
Howard Paredes Zegarra Computacion
Penny Vargas Cordero Industrial
Sheldon Cooper Quizpe Mecatronica
为什么我有这个输出,这是不是我的结构中的指针 char 有问题,任何建议都很好。提前致谢。
注意:我不能为这个任务使用字符串。
由于您使用的是 C 风格的字符串,因此您需要在数组中的 char
之后添加一个空终止符。这意味着您需要将每个 char
数组的大小增加一。不然你输出的时候,它会一直显示你告诉它打印的数组后面的所有数组的字符。
由于不允许使用 std::string
,因此请在 C 风格字符串的末尾附加一个空终止符(数字 0
或字符 '[=14=]'
)。
我正在读取包含以下数据的文件:
0001 Howard Paredes Zegarra Computacion
0002 Penny Vargas Cordero Industrial
0003 Sheldon Cooper Quizpe Mecatronica
我的cpp文件是这样的:
struct Alumno {
char codigo[5];
char nombre[12];
char apellidos[20];
char carrera[15];
};
istream& operator >> (istream &stream, Alumno &record)
{ stream.read(record.codigo, 5);
stream.read(record.nombre, 12);
stream.read(record.apellidos, 20);
stream.read(record.carrera, 15);
stream.get();
return (stream);
}
vector<Alumno> load() {
ifstream file("datos.txt");
vector<Alumno> students;
while (!file.eof()) {
Alumno student = Alumno();
file >> student;
students.push_back(student);
}
file.close();
return (students);
}
int main() {
auto students = load();
for (auto student : students) {
string nombre = student.nombre;
cout << nombre << endl;
}
return (0);
}
所以问题是当打印变量 "nombre" 时打印整行减去第一列。 预期输出:
Howard
Penny
Sheldon
但是当前输出是:
Howard Paredes Zegarra Computacion
Penny Vargas Cordero Industrial
Sheldon Cooper Quizpe Mecatronica
为什么我有这个输出,这是不是我的结构中的指针 char 有问题,任何建议都很好。提前致谢。 注意:我不能为这个任务使用字符串。
由于您使用的是 C 风格的字符串,因此您需要在数组中的 char
之后添加一个空终止符。这意味着您需要将每个 char
数组的大小增加一。不然你输出的时候,它会一直显示你告诉它打印的数组后面的所有数组的字符。
由于不允许使用 std::string
,因此请在 C 风格字符串的末尾附加一个空终止符(数字 0
或字符 '[=14=]'
)。