2013-10-08 80 views
0

我正在嘗試讀取文本文件並將水果與我所輸入的內容進行匹配(例如,我鍵入apple,它將搜索文本文件中的蘋果詞並匹配它並輸出它已被發現),但我正在努力實現我想要的結果,因此需要幫助。C++。如何從文件中讀取並與輸入匹配

我有一個文本文件(fruit.txt)具有低於

蘋果所示的內容,30

香蕉,20

梨,10


這是我的代碼

string fruit; 
string amount; 
string line = " "; 
ifstream readFile("fruit.txt"); 
fstream fin; 

cout << "Enter A fruit: "; 
cin >> fruit; 

fin >> fruit >> amount; 
while (getline(readFile, line,',')) 
    { 
     if(fruit != line) { 
      cout <<"the fruit that you type is not found."; 
     } 

     else { 
      cout <<"fruit found! "<< fruit; 
     } 
} 

請告知 謝謝。

+0

你面臨的問題是什麼? – billz

+0

到底出了什麼問題? –

+0

看看序列化/反序列化.. http://stackoverflow.com/questions/11415850/c-how-serialize-deserialize-objects-without-any-library – lordkain

回答

0

getline環路你讀入"apple"line第一環路,並"30\nbanana"line第二時間等

相反讀取(使用getline)整行,然後使用例如std::istringstream提取水果和金額。

喜歡的東西:

std::string line; 
while (std:::getline(readFile, line)) 
{ 
    std::istringstream iss(line); 

    std::string fruit; 
    if (std::getline(iss, fruit, ',')) 
    { 
     // Have a fruit, get amount 
     int amount; 
     if (iss >> amount) 
     { 
      // Have both fruit and amount 
     } 
    } 
} 
+0

好吧我會試一試非常感謝 – user3493435

0

我會說,我只是一個初學者喜歡你開始,把你的代碼,並做了一些改動,例如:

  1. 使用「fstream的」從文件讀取,直到不是文件的結尾。

  2. 然後將每行讀入字符串流中,以便稍後使用逗號分隔符對其進行制動。

  3. 我也使用了一個二維數組來存儲水果和每種類型的數量。

  4. 最後我不得不在數組中搜索想要顯示的水果。

之前,我張貼我想提醒你的是,程序如果有更多然後20​​個果實不止一個屬性(在這種情況下,金額)不會工作的代碼。 下面的代碼:

#include <sstream> 
#include <fstream> 
#include <iostream> 
#include <stdio.h> 
using namespace std; 

void main (void) 
{ 
    fstream readFile("fruit.txt"); 
    string fruit,amount,line; 
    bool found = false; 
    string fruitArray[20][2]; 

    cout << "Enter A fruit: "; 
    cin >> fruit; 

    while (!readFile.eof()) 
    { 
     int y =0 ; 
     int x =0 ; 
     getline(readFile,line); 
     stringstream ss(line); 
     string tempFruit; 
     while (getline(ss,tempFruit,',')) 
     { 
      fruitArray[x][y] = tempFruit; 
      y++; 
     } 
     x++; 
    } 

    for (int i = 0; i < 20; i++) 
    { 
     for (int ii = 0; ii < 2; ii++) 
     { 
      string test = fruitArray[i][ii] ; 
      if (test == fruit) 
      { 
       amount = fruitArray[i][ii+1]; 
       found = true; 
       break; 
      } 
      else{ 
       cout <<"Searching" << '\n'; 
      } 
     } 
     if (found){ 
      cout << "Found: " << fruit << ". Amount:" << amount << endl; 
      break; 
     } 
    } 
    cout << "Press any key to exit he program."; 
    getchar(); 
} 

希望你從中學到一些東西(我確實這樣做了)。

+0

好的謝謝很多 – user3493435