文字がバー "|" で区切られている C++ のファイルを読み込もうとしていますが、これを行う最善の方法は何ですか?
ありがとう
フィールドはバーで区切られていると思いますが、レコードは改行で区切られています。
まず、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, '|');
使用しているコードの複雑さに応じて、探しているのはCSV(コンマ区切り値)ファイルリーダーのバリエーションです。そこには何千もあります。コードを堅牢にする必要がある場合は、次のような複雑さがあるため、独自に作成するのではなく、そのうちの1つを使用することをお勧めします。
最も人気のあるものの1つは、起動と操作が非常に簡単なBoostトークナイザーです。「|」を使用していることをトークナイザーに確実に伝える必要があります。フィールドセパレーターとして。
その他の指針については、この関連する質問をご覧ください。
「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;
}