2015-06-22 56 views
-3

我有一個名爲fruit.txt這樣C++讀取文件並提取字符串

apple 2 in place A 
banana 3 in place B 
peach 4 in place C 

what is the total? 

然後我想用C++來逐行讀取該文件中的行,但我只想要水果的名稱和號碼,並省略文件其他信息。例如,我想讀第一行「apple」並寫入string name[i]並讀取2並寫入int num[i]並省略「就地A」。保持這個過程直到結束,但也省略最後一行「總數」。 以下標題允許使用:<iostream>, <fstream>, <sstream>, <iomanip>, <string>, <cstdlib>.

那麼如何在C++中實現這個呢?

+2

從http://stackoverflow.com/help/on請求作業幫助的主題性問題必須包括您所做的工作摘要ne到目前爲止解決這個問題,並描述你正在解決的難題 – paisanco

+1

你已經解決了什麼更簡單的問題? – Beta

+1

你真的沒有問過問題。你不能只描述你想要做的事情,並問如何去做。你必須要問一個*特定的問題。你有沒有算出算法?如果不是,請詢問您正在做的具體問題。如果你有,然後向我們展示並向我們詢問你正在實施的具體問題。但「這就是我想要做的」,不是一個問題。 –

回答

0

你可以使用std :: getline將每行存儲到一個字符串中。 對於每一行,創建一個從行中讀取的字符串流。 使用>>操作符兩次得到字符串和數字(​​>>讀直到空格)的前兩個'標記' 如果您需要學習如何使用stringstream和getline,請閱讀C++文檔和舊堆棧溢出問題

+0

是的,我得到整個行並將其存儲在一個字符串中,但我不知道如何使用>>兩次來讀取它。你能舉一個例子說明如何去做? – techmagician

+0

如果你創建一個叫做'linereader'的std :: istringstream,它看起來像這樣:'int num;串水果; linereader >> fruit >> num;' –

0

下面的代碼片段擴大對@ JS-Sol的答案

std::string line; 
    while (std::getline(infile, line)) { 

    std::istringstream ss(line); 

    std::string name; 
    int num; 

    ss >> name >> num; 

    // do something with name and num                               

    } 

編輯: 我覺得,你的問題是與此類似:Read file line by line