我試圖讀取';'分隔的數據,成爲一個結構數組,所以我可以稍後過濾它們。 示例數據:將分區數據讀入數組結構C++
1.1 ; name1; 11-07-2014; 14:30
1.2 ; name2; 11-07-2017; 15:10
我不知道有多少項目會在此.txt文件。此外,我需要添加一個posibility來選擇用戶想要工作的文件(那有效)我是新的C++,所以我會爲任何提示gratefull。
到目前爲止,我已經創造了這個:
typedef struct{
char numb[21];
char names[100];
char date[11];
char time[6];
}vec;
vec *logs[200];
void_fastcall TForm1::Button1Click(TObject *Sender)
{
OPENFILENAME ofn;
char fname[MAX_PATH] ="";
ZeroMemory(& ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.lpstrFilter = "Text files (*.txt)\0*.txt\0All files\0*.*\0";
ofn.nMaxFile = MAX_PATH;
ofn.lpstrFile = fname;
ofn.lpstrDefExt = "txt";
ofn.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
string line;
if(GetOpenFileName(& ofn))
{
for(int i=0; i<200; i++){
getline(fname, logs[i].numb, ';');
getline(fname, logs[i].names, ';');
getline(fname, logs[i].date, ';');
getline(fname, logs[i].time, ';');
}
}
}
我得到這個錯誤 E2285找不到 '函數getline < _CharT,_Traits,_Alloc>(字符*,不確定的,字符)'
匹配
使用getline讀取整行。然後,在該行內找到分號。 – 2014-09-02 11:31:23
'logs'是一個'vec *'數組,但你沒有使用正確的操作符。你應該使用'logs [i] - >麻木'。其次,你錯誤地使用了'std :: getline'(假設它就是這個樣子)。沒有重載將'char []'作爲第一個參數。 – 2014-09-02 11:35:21