アプリ版:「スタンプのみでお礼する」機能のリリースについて

C++でテキストファイルを読み込んで平均、標準偏差などを表示するプログラムを作っているのですが、
vectorにテキストファイルを読み込ませる方法が分からないので教えていただけないでしょうか?

int型の配列に読み込ませる方法もありますが、テキストファイルのデータ数が未知数のためvectorを使いたいです。

A 回答 (3件)

ものごとは正確に認識し正確に表現しましょう。

そうでなければプログラミングは出来ません。

>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);

上の解答を書いてる間に質問者から補足がありましたね。
でもまぁ、この回答の趣旨に訂正は必要無いと思いますのでそのままアップします。
ファイル内の区切りがスペースでも改行でもこのサンプルで問題ありません。
    • good
    • 2
この回答へのお礼

お答えいただきありがとうございます。

質問の仕方に不備があり申し訳ありませんでした。

お礼日時:2005/11/30 00:41

#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;
 }
}
    • good
    • 1
この回答へのお礼

ありがとうございます。

お礼日時:2005/11/30 02:03

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

この回答への補足

15
34
8
12
17

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

補足日時:2005/11/29 23:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!