0

以下を使用して開いたファイルがあります。

ifstream ifile(FilePath)

ファイルには、たとえば10行のデータが含まれ、各行には、コンマで区切られた値(ピラミッドのように)が均等に増加する数が含まれます。したがって、最初の行には1つの値があり、2番目の行には2つの値があります。

私は次のことをすべて1つの関数内で実行したいと思いました(ファイルchar配列を1回だけトラバースしながら):

-改行文字に遭遇するたびに、値で渡されたパラメーターをインクリメントできます(関数が終了すると、ファイルの行数がわかります)。

-ファイルの各行を配列に格納することも必要でした。改行文字の間にすべての文字を「接着」するための最良の方法は何でしょうか。

静的に割り当てられた配列を使用したいのですが、問題は、手順1(改行文字の数を数える)を実行した後でしか配列のサイズがわからないことです。これに対して二重解析(1回の解析で行数をカウントし、その値を使用して静的配列を割り当てる)または単一の解析を実行して動的配列に挿入する方が速いでしょうか?

これに重点を置いているのは、高速なコードを作成することです(したがって、OOに対応していないことは問題ではありません)

私がたくさん質問しているなら、お詫びします、うまくいけば、私がこれにいくつかの考えを与えたのを見ることができます。

編集、サンプルファイル:

a

紀元前

d、e、f、g、h

j、k、l、m、n、o、p

このファイルから私は達成したいと思います:

  • ファイルに4行あることを知っている
  • 各行を含む非動的配列
  • 2行目の要素数
4

1 に答える 1

0

これを行う方法については、既存の投稿に多くの例があります。

ifstream を使用してファイルを一度読み込みたい場合は、次のようにすることができます。

std::ifstream in("myfile");

std::stringstream buffer;
buffer << in.rdbuf();

std::string contents(buffer.str());
于 2012-12-13T20:51:22.907 に答える