2017-11-05 13 views
-2

私の人生にとって、私はこれを正しく行う方法を理解できないようです。C++ getline変数の行に異なる部分を置く

まず、私はcsvファイルから行を読みます。その行には、 2992854、BOB、3452,394832

があります。実際に私が見つけたすべての例のように、それぞれの結果をコンソールに読み込むことは望ましくありません。変数:

int time; 
string name; 
int location; 
int point; 

は今のところ、これは私のコードです:UPDATED

string line; 
    ifstream inputFile("input.csv"); 

    std::list<Cramista> Cramistas; 

    while (!inputFile.eof()) 
    { 
     int time; 
     string name; 
     int location; 
     int point; 

     std::vector<std::string> stringArray; 
     std::size_t position = 0, found; 

     getline(inputFile, line); 

     while ((found = line.find_first_of(',', position)) != std::string::npos) 
     { 
      stringArray.push_back(line.substr(position, found - position)); 
      position = found + 1; 
     } 

     time = stoi(stringArray[0]); 
     name = stringArray[1]; 
     location = stoi(stringArray[2]); 
     point = stoi(stringArray[3]); 

    } 

: だから、私がここに持っているもので、私は、4枚のうち最初の3を取得することができますよ私は変数に移動することができます配列にそれらを配置します。その4番目の部分を取得する方法を把握しようとしています。

私は2992854持って

、BOB、および3452が、私は持っていません394832.

+2

あなたはグーグルグーグルスキルがそれほど素晴らしいわけではありません、 'std :: stringstream'。 'nuff –

+0

誰が言ったか教えてください'eof()'が良いアイデアになるまでループしていましたので、私はそれらを打ち抜くことができます。 –

+0

Googleのスキルを向上させる:[StackOverflow C++読み込みファイルcsv](https://www.google.com/search?q=stackoverflow+c%2B%2B+read+file+csv&ie=utf-8&oe=utf-8) 。そこに少なくとも1つの複製があるはずです。 –

答えて

0

私が使用して「コンソールにそれぞれの結果を読み込む」を避けるために、基本的に意味

cin >> time >> name >> location >> point;

あなたはコンマで行を分割する必要があります(それは文字列であると仮定して、非文字列データを整数に変換します)。

+0

私が間違っていない限り、私は 'operator'は 'cin'に関連付けられ、 'operator'は 'cout'に関連付けられていると思います。投稿する前にコードをテストすることができます。 –

+0

これは何をするのですか? 'cin << time' – MFisherKDX

+0

あなたは皆さんが正しいです。最悪のビットは私の他の画面で私のC + +の本を開いている:( –

関連する問題