• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++ 数値データファイルから2次元配列への格納法)

C++ 数値データファイルから2次元配列への格納法

このQ&Aのポイント
  • C++初心者のための、数値データファイルを読み込んで2次元配列に格納する方法について教えてください。
  • C++の参考書には、vectorを使用することでサイズを動的に変更できることが書かれています。データ数が決まっていない場合でも、最後まで読み込むプログラムを作成したいです。
  • 出力結果は、n[i][j]= valueの形式で表示されるようにしたいです。具体的なコード例やアドバイスがあれば、教えていただけると嬉しいです。

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

  • ベストアンサー
回答No.3

やはり、安直に置き換えるとダメですね。 「配列風」のほうは、こんな感じに修正(出力結果は同じ) pair を使ったソースも、inner は、while() のループの中で定義した方がいい気がする。 #include <vector> #include <fstream> #include <iostream> int main() { std::vector<std::vector<double> > n; std::ifstream inf("test.txt"); while(1) { std::vector<double> inner; double a; double b; inf >> a >> b; if (inf.eof()) break; inner.push_back(a); inner.push_back(b); n.push_back(inner); } for (int i = 0; i < n.size(); i++) std::cout << "[" << i << "] = " << n[i][0] << ", " << n[i][1] << "\n"; }

kinounishimasu
質問者

お礼

すみません、ありがとうございます。 教えて頂いたコードをもとに自分でも幾つか試してみます。

その他の回答 (2)

回答No.2

例題を見ると、2次元配列というより(2次元配列であるのはその通りですが) x, y のペアの集まりのような気がします。 この場合、pair の vector というのもありかと思います。 出力結果は、お望みのものとは異なりますが。 ---------------------------------------------------------------- #include <vector> #include <fstream> #include <iostream> int main() { std::vector<std::pair<double, double> > n; std::pair<double, double> inner; std::ifstream inf("test.txt"); while(1) { inf >> inner.first >> inner.second; if (inf.eof()) break; n.push_back(inner); } for (int i = 0; i < n.size(); i++) std::cout << "[" << i << "] = " << n[i].first << ", " << n[i].second << "\n"; } ---------------------------------------------------------------- 配列風にするなら、 #include <vector> #include <fstream> #include <iostream> int main() { std::vector<std::vector<double> > n; std::vector<double> inner; std::ifstream inf("test.txt"); while(1) { inner.clear(); double d; inf >> d; inner.push_back(d); inf >> d; inner.push_back(d); if (inf.eof()) break; n.push_back(inner); } for (int i = 0; i < n.size(); i++) std::cout << "[" << i << "] = " << n[i][0] << ", " << n[i][1] << "\n"; }

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.1

dataの中身の文字列を読んで、文字列を解析して数値データ一つのみを文字列として取り出し n[0][0]から順番に録りだした値をセットする処理を繰り返せばいい やるべきことは ・ファイルdata読み込み ・文字列解析・数値文字列取り出し ・配列要素設定 の繰り返しです

kinounishimasu
質問者

お礼

ご回答ありがとうございます。是非検討してみます。

関連するQ&A