1

私は定期的に次のようなファイルを扱います(Rとの互換性のため):

# comments
# more comments
col1 col2 col3
1 a hi
2 b there
. . .

非常に頻繁に、col2をベクターまたは他のコンテナーに読み込みたいと思うでしょう。この種のファイルを解析する関数を作成するのは難しいことではありませんが、それを実行するための十分にテストされたライブラリがなかったとしたら、私は驚きます。そのようなライブラリは存在しますか?(私が言うように、自分で作成するのは難しいことではありませんが、私はC ++の専門家ではないため、任意のコンテナーを使用して任意のデータ型を含めることができるテンプレートを使用するのは面倒です。)

編集:必要な列の名前はわかっていますが、この特定のファイルの列の順序はわかりません。列は、タブまたはスペース(おそらく両方ではない)である可能性のある不明な量の空白で区切られています。各行の最初のエントリの前に空白がある場合とない場合があります。たとえば、1つのファイル内で空白が変更される場合があります。

number letter
 8 g
 9 h
10 i
4

2 に答える 2

2

私はこれを行うC++ライブラリを知りません。ただし、簡単な解決策はLinuxを使用することcutです。最初にコメントを削除する必要があります。これはsedで簡単に実行できます。

sed -e '/^#/d' <your_file>

次に、3番目の列からテキストだけを選択する次のコマンドを適用できます。

cut -d' ' -f3 <your_file>

それらをパイプと組み合わせて、単一のコマンドにすることができます。

sed -e '/^#/d' <your_file> | cut -d' ' -f3 <your_file>

このコマンドをプログラムで実行してから、各行をstlコンテナに追加するだけで済みます。

//  pseudocode
while(file.hasNextLine())
{
  container << file.readNextLine();
}

cutコード内から実際に実行する方法については、この回答を参照してください。

于 2012-04-13T16:57:46.177 に答える
2

ブースト分割は、空白で一貫して分割できる場合、必要な処理を実行できます。

于 2012-04-13T17:10:15.773 に答える