我有一个文本文件,我想通过使用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 ++字符串函数提供第二种读取数据的方法。我不允许读取数据,就像我在第二种方法中从上面所做的那样。我必须遵循
的伪代码在伪代码的第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
答案 0 :(得分:1)
这就是substr()的用途。
pointer[0].name=cppstr.substr(0, position);