0
我有,我想用C++字符串函数在数据读入一个结构的文本文件。文本文件看起来像这样。使用字符串函数将文件中的数据读入结构中?
Thor;3.4;3.21;2.83;3.78
Loki;2.89;2.21;2.10;3.33
Sam;3.65;3.78;4.0;3.89
Olivia;2.36;2.75;3.12;3.33
Bruce;3.12;2.4;2.78;3.2
我有学生结构数组
struct Student
{
string name;
double gpa[4];
};
我能够成功通过我的函数一个这样做的所有的数据读取。
for (int counter = 0; counter < numofStudents; counter++)
{
getline(infile, pointer[counter].name, ';');
for (int i = 0; i < 4; i++)
{
infile >> pointer[counter].gpa[i];
if (i == 3)
infile.ignore(4, '\n');
else
infile.ignore(4, ';');
}
}
我的问题是,我必须还提供通过使用C++字符串函数在数据读出的第二方法。我不允许在第二种方法中读取数据,例如我是如何从上面完成的。我必须从文件
- 读的伪代码在同一行;
- 使用C++函数字符串到线路的一部分复制出来直到; 这将是名字符串
- 使用C++字符串函数来寻找下一个;
- 使用C++函数字符串到下一个部分复制排队的出; 这将是GPA 1
- 继续循环,直到所有的数据被读取。
在伪代码的第3部分,我得到一个错误,说不能从const char *转换为char *。有没有办法来解决这个问题?
string cppstr;
infile >> cppstr;
const char* mynewC = cppstr.c_str();
int position = cppstr.find(";", 0);
pointer[0].name.copy(mynewC, 0, position); // this is part 3 that gives the erorr
我完全忘了substr()函数。它现在有效。谢谢! – Mark
@马克这个工作另一个方便的工具是['的std ::函数getline(INFILE, ';')'](http://en.cppreference.com/w/cpp/string/basic_string/getline)。您可以用任何字符替换行尾的字符。在这种情况下分号。 – user4581301