2009-08-12 7 views
0

各行のファイルからこの情報を取得する最も良い方法は何ですか?ファイル情報を変数に取り込みますか?

テキストファイルだから私はライン1(1 E)から情報を取得する必要があり、この

1 E 
1 P 
1 C 
2 E a 
5 E P C 

のように見えますが、他にEその後、変数に1を入れて。残りの行についても同じですが、いくつかは要素の数が異なっていますので、わかりません。

+0

適切なヘルプを提供するために、ファイル内の数字と文字の意味を理解する必要があります。レコードの長さは様々であるため、データの意味に依存しない一般的なプロセスだけではありません。 –

+2

宿題のように見えます。 –

+0

あなたの所見はあなたの答えと同じくらい良いです –

答えて

1

おそらくベクトルのベクトルが必要です。

std::vector<std::vector<std::string> > info; 

内側ベクターは線

外側のベクトルが各ラインを含んで各単語を含みます。私はつもりはないので

、ラインtokenise、ファイル内の各行を読むインナーベクトルに各トークンを追加し、各ライン

のために、ベクターに単語のためのベクトルを追加するには、宿題の質問のように聞こえますファイルの読み方を示すコードを投稿するか、文字列をトークン化する

0

filestream >> intvariable;を使用して、行の先頭にある整数を読み取ることができます。 getlineを使って残りの行を文字列に読み込んだり、それを配列に分割したり、それ以外の処理をしたりすることができます。あなたは正確に何をしたいかに関してはあまり具体的ではありませんでした。

1

クイック/汚れた解決策。

#include <fstream> 
#include <vector> 
#include <string> 
#include <sstream> 

int main() 
{ 
    using namespace std; 

    typedef pair<size_t, vector<string> > infoPair; 
    typedef vector<infoPair > infoVector; 

    ifstream inputFile("test.txt"); 
    size_t lineNumber = 1; 
    infoVector info; 
    string line; 

    while(getline(inputFile, line)) 
    { 
     stringstream extractor(line); 
     vector<string> symbols; 
     string symbol; 

     while(extractor >> symbol) 
     { 
      symbols.push_back(symbol); 
     } 

     info.push_back(infoPair(lineNumber, symbols)); 
     lineNumber++; 
    } 

    return 0; 
} 
+1

私はそれが宿題ではないことを願っています。クス、私は本当にdownvoteに値する。 – AraK

+0

いいね、1行にストリングストリームを使用する。 +1 – xtofl

関連する問題