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