[英]Using multiple instances of getline in C++
我一直在為C ++進行類分配,我們需要從文本文件獲取輸入並將這些值分配給數組。...一個是字符串,第二個是int,第三個是雙精度。
我們只是被介紹給數組而已,我對指針或鏈表或任何高端東西一無所知,所以我覺得我的選擇有些局限。 我已經整天努力尋找一種從文本文件中獲取輸入並將其分配給適當的數組的方法。 我嘗試使用getline讀取輸入文件並設置分隔符以分隔每個數據,但是當我嘗試多次使用它時出現錯誤。 從我讀到的內容來看,這與我如何重載該函數有關,但是我在解決它方面無所適從。 我已閱讀的所有解釋都超出了我目前的熟悉程度。 現在,我專注於這段代碼:
for (int i = 0; i < EMP_NUM; i++) // Get input from text file for names.
getline(inFile, nameAr[i], '*');
for (int i = 0; i < EMP_NUM; i++) // Input for hours.
getline(inFile, hoursAr[i], '*');
for (int i=0; i < EMP_NUM; i++) // Input for hourly rate.
getline(inFile, hrateAr[i], '*');
我試圖使用getline三次,並將數據寫入三個單獨的數組,然后稍后使用它們進行一系列計算,並將其輸出到另一個文本文件。 getline的第一個實例不會產生任何編譯器錯誤,但是后兩個實例會產生。 我不太確定將數據放入數組的另一種解決方案,所以我很茫然。 任何幫助將是巨大的!
如果我理解正確,則文件中只有三個值:字符串,整數和雙精度型。 我認為它們由空格分隔。
如果是這樣,則您不需要std::getline()
。 而是使用提取運算符:
std::ifstream file("input.txt");
std::string s;
if( ! (file >> s) ) { // a single word extracted from the file
// failure
}
int n;
// ...
編譯器錯誤怎么說? 您確定錯誤是由getline
引起的嗎? 也許不是因為getline
調用,而是因為i
的多個聲明。
1)代替三個不同的迭代,只使用一個
2)在getline中傳遞字符串對象而不是指針
string buf;
for (int i = 0; i < EMP_NUM; i++) // Get input from text file for names.
{
getline(inFile, buf, '*');
nameAr[i] = buf;
getline(inFile, buf, '*'); //assuming delimiter is again *
hoursAr[i] = atoi(buf.c_str() ); //C way to doing it...however in c++ u have to use stringstreams....
getline(inFile, buf);
hrateAr[i] = atof(buf.c_str() );;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.