こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

borlandC++で膨大データの入出力ができない

borlandC++を試してますが、ifstream等を利用してファイル入出力を試してますが、プロンプトを用いて、入力データが多すぎるとコンパイルは通りますが実行exeが拒否反応を起こし処理が止まってしまいます。
データが7万行以上ぐらいに達すると拒否反応を起こします。
自分がやろうとしてるのはそれを遥かに凌ぐ何百万行のデータの入出力処理を行いたいのですがこれでは不可能です。
どうして膨大データの入出力ができないのでしょうか?

自分の試したファイル入出力のプログラムソースと問題の読み込んだデータの内容も下に貼り付けます。
またソース中の処理で上記とは別のエラーを起こしたものがあり、入力データを一行毎に格納する配列 dag[b]  をprintfで表示させようと以下の様に記述しましたが
printf("[%d] %s\n", b,dag[b]);
もデータが7行以上になるだけでエラーを起こして止まります。

どうか膨大データの入出力とprintfのエラーの解決方法について教えて下さい。
宜しくお願いします。

#include <iostream.h>
#include <fstream>

main()
{

string dag[100000];
string LineData;
int b=0;

ifstream in("rrs.txt", ios::in);
if(!in){
printf("エラー\n");
exit(1);
}

while(!in.eof()){
printf("データ\n");
in >> dag[b];
printf("[%d] %s\n", b,dag[b]);
b++;
}

in.close();

ofstream out;
out.open ("WRT.txt");
for(int i=0;i < b;i++)out << dag[i] << endl;
out.close();

return 0;
}

#読み込んだデータ内容
2011/12/09,16:00:00,77.48,77.50,77.48,77.50
2011/12/11,17:00:00,77.66,77.66,77.54,77.61
2011/12/11,18:00:00,77.61,77.61,77.58,77.59
2011/12/11,19:00:00,77.59,77.64,77.59,77.63
2011/12/11,20:00:00,77.63,77.65,77.61,77.63
2011/12/11,21:00:00,77.63,77.63,77.58,77.60
2011/12/11,22:00:00,77.60,77.62,77.60,77.60
2011/12/11,23:00:00,77.61,77.64,77.60,77.64
2011/12/12,00:00:00,77.64,77.64,77.61,77.63
2011/12/12,01:00:00,77.64,77.64,77.56,77.58
2011/12/12,02:00:00,77.58,77.63,77.57,77.59
2011/12/12,03:00:00,77.59,77.69,77.58,77.66
2011/12/12,04:00:00,77.67,77.84,77.67,77.83
2011/12/12,05:00:00,77.82,77.90,77.74,77.80
2011/12/12,06:00:00,77.80,77.84,77.75,77.81
2011/12/12,07:00:00,77.81,77.82,77.75,77.78
2011/12/12,08:00:00,77.78,77.97,77.76,77.97
2011/12/12,09:00:00,77.97,77.97,77.83,77.91
2011/12/12,10:00:00,77.90,77.93,77.76,77.80
2011/12/12,11:00:00,77.79,77.86,77.72,77.86
2011/12/12,12:00:00,77.86,77.88,77.83,77.84
2011/12/12,13:00:00,77.84,77.89,77.83,77.89

投稿日時 - 2013-02-04 17:26:06

QNo.7927802

すぐに回答ほしいです

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

× printf("[%d] %s\n", b,dag[b]);
○ printf("[%d] %s\n", b,dag[b].c_str());

投稿日時 - 2013-02-04 20:56:53

お礼

printf("[%d] %s\n", b,dag[b].c_str());
に修正すると処理停止、文字化けがなくなりました。

ありがとうございます。

投稿日時 - 2013-02-05 11:35:46

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

bがint型だけど大丈夫?

投稿日時 - 2013-02-04 18:34:35

補足

b変数はカウントするだけなので..

投稿日時 - 2013-02-05 11:38:50

ANo.1

zwi

ローカル変数でstring dag[100000];ってのがまず無茶。スタックメモリが絶対足らない。

投稿日時 - 2013-02-04 18:03:16

補足

ご回答ありがとうございます。

>ローカル変数でstring dag[100000];ってのがまず無茶。スタックメモリが絶対足らない。
おそらく配列数に限界があると感じました。
というより配列にデータを集める事にしか頭が言ってませんでした。
配列以外の方法を使えば何百万行のデータを読み込み別ファイルに出力に成功しました。

投稿日時 - 2013-02-05 11:38:12

あなたにオススメの質問