• ベストアンサー

C++でvectorにテキストファイルを読み込む

C++でテキストファイルを読み込んで平均、標準偏差などを表示するプログラムを作っているのですが、 vectorにテキストファイルを読み込ませる方法が分からないので教えていただけないでしょうか? int型の配列に読み込ませる方法もありますが、テキストファイルのデータ数が未知数のためvectorを使いたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • KoHal
  • ベストアンサー率60% (110/181)
回答No.2

ものごとは正確に認識し正確に表現しましょう。そうでなければプログラミングは出来ません。 >vectorにテキストファイルを読み込ませる きわめてあいまいな表現です。 これを文字通りに受け止めれば vector<char>にテキストファイルの内容を一文字ずつ読みこむということになりますが、違いますよね? 恐らく、そのテキストファイルには複数の数値が文字表現として記録されていて、その個々の数値をvector<int>(またはvector<double>他)に格納したいということでしょうね? さて、そのテキストファイルの書式は如何なるものでしょう? 数値と数値の区切りはスペースですか?カンマですか?改行ですか? これが判らなければソースコードは書けません。 このような詳細は回答者に補足要求される前にご自分で最初から明確にしたうえで質問すべきです。 さて、とりえあえず、テキストファイルには整数値がスペースを区切りとして並んでいる。 それをvector<int>に順に読みこむと言う仕様でサンプルを示します。 ヘッダ、ネームスペースは省略。 vector<int> array; ifstream file("filename.txt"); int buf; while ( file >> buf ) array.push_back(buf); 上の解答を書いてる間に質問者から補足がありましたね。 でもまぁ、この回答の趣旨に訂正は必要無いと思いますのでそのままアップします。 ファイル内の区切りがスペースでも改行でもこのサンプルで問題ありません。

DORASUKE3
質問者

お礼

お答えいただきありがとうございます。 質問の仕方に不備があり申し訳ありませんでした。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.3

#include <iostream> #include <fstream> #include <vector> #include <iterator> int main() {  std::ifstream input("data.txt");  std::vector<int> v((std::istream_iterator<int>(input)),std::istream_iterator<int>());  for ( std::vector<int>::const_iterator iter = v.begin();     iter != v.end(); ++iter ) {   std::cout << *iter << std::endl;  } }

DORASUKE3
質問者

お礼

ありがとうございます。

すると、全ての回答が全文表示されます。
回答No.1

テキストファイルの平均/標準偏差ってなんですか?

DORASUKE3
質問者

補足

15 34 8 12 17 というようなデータがテキストファイルにがあるときに そのデータの平均、標準偏差を求めるということです。

すると、全ての回答が全文表示されます。

関連するQ&A