-4

文字がバー "|" で区切られている C++ のファイルを読み込もうとしていますが、これを行う最善の方法は何ですか?

ありがとう

4

3 に答える 3

4

フィールドはバーで区切られていると思いますが、レコードは改行で区切られています。

まず、std::getline:を使用してテキストの行を読みます。

std::string line;
std::getline(std::cin, line);

次に、境界線で線を|引きます。

std::stringstream sline(line);
std::string field;
std::getline(sline, field, '|');
...
std::getline(sline, field, '|'); 
于 2012-04-24T06:23:03.617 に答える
1

使用しているコードの複雑さに応じて、探しているのはCSV(コンマ区切り値)ファイルリーダーのバリエーションです。そこには何千もあります。コードを堅牢にする必要がある場合は、次のような複雑さがあるため、独自に作成するのではなく、そのうちの1つを使用することをお勧めします。

  • '値'の1つに実際に'|'が含まれている場合はどうなりますか 引用符で囲まれた文字は言う?
  • '値'の1つにキャリッジリターンまたはラインフィードが含まれている場合はどうなりますか?

最も人気のあるものの1つは、起動と操作が非常に簡単なBoostトークナイザーです。「|」を使用していることをトークナイザーに確実に伝える必要があります。フィールドセパレーターとして。

その他の指針については、この関連する質問をご覧ください

于 2012-04-24T08:10:29.797 に答える
0

「file.dat」というファイルがあるとします。
次のようになります。

item1|item2|item3|item4|item5|item6

このプログラムは、ファイル内の各項目を出力します。

#include <iostream>
#include <cstdlib>
#include <string>
#include <fstream>

int main(){

    std::ifstream infile("file.dat");

    std::string item;
    getline(infile,item,'|');

    while (!infile.eof()){
        std::cout << item << std::endl;
        getline(infile,item,'|');
    }

    return EXIT_SUCCESS;
}
于 2012-04-24T07:21:06.733 に答える