2017-03-01 5 views
0

ファイルから入力行を読み込む際に問題があります。これは私が管理することができる非常に簡単な作業ですが、問題は入力ファイルの行は単語と数字で構成することができます私はそれらを別々に読んで、異なる変数に格納する必要があります。例を教えてください。(斜体):入力ファイルから読み込んだ行を解析しようとしています

BOOK 100 
PENCIL  45 
LAPTOP 49 
SPOON    34 

単語と数字の間にいくつのスペースがあっても読み込み操作は機能します。

私はこのコードを書いて、行を直接読み上げました。しかし、私はあきらめた情報に基づいてそれらを解析する方法を知らない。

string fileName; 
     cout << "Enter the name of the file: "; 
     cin >> fileName; 

     ifstream file; 
     file.open(fileName); 

     while(file.fail()) 
     { 
      cout << "enter file name correctly:"; 
      cin >> fileName; 
      file.open(fileName); 
     } 

     string line; 
     int points; 


     while(!file.eof()) 
     { 
      getline(file, line); 
      stringstream ss(line); 

        *I do not know what to do here :)* 
        } 
+0

'eof()'はトラブルの終わりの原因です。代わりに 'while(std :: getline(file、line){... use line}'を試してください。 – BoBTFish

答えて

3

しかし、私はあきらめた情報に基づいてそれらを解析する方法がわかりません。非常にシンプル

ザッツ、例えば、以下を参照してください。

std::stringstream ss("SPOON    34"); 
std::string s; 
int n; 
if (ss >> s >> n) { 
    std::cout << s <<"\n"; 
    std::cout << n <<"\n"; 
} 

出力:

SPOON 
34 
0

あなたはsscanfを使用することができます。

char name[100]; 
int number; 
sscanf(line, "%s %d", name, &number); 
printf("%s, %d", name, number); 

これは本当にC++ ishだと私は分かりません。あなたが好きなようにstringstreamsを使用しています。

関連する問題