その質問を策定するのは容易ではないので、私はそこにすべての悲しみのために申し訳ありません.. 私は、現時点では、このようなCSVファイルに書いています:最後のエントリの後ではなく、最後のエントリの前に、csvファイルにデータを追加します。 C++
double indicators::SMACurrentWrite() {
if (!boost::filesystem::exists("./CalculatedOutput/SMAcurrent.csv")) // std::cout << "Can't find my file!" << std::endl;
{
std::ofstream SMAfile;
SMAfile.open("./CalculatedOutput/SMAcurrent.csv");
SMAfile << "SMA" << endl << SMA[0] << endl; // .. or with '\n' at the end.
SMAfile.close();
}
else {
std::ofstream SMAfile;
SMAfile.open ("./CalculatedOutput/SMAcurrent.csv", ios::app); // Append mode
SMAfile << SMA[0] << endl; // Writing data to file
SMAfile.close();
}
return 0;
}
たびにアプリケーションを実行すると、新しい値を最後に、出力ファイルに追加されます。
SMA
32.325
私は、ヘッダ(および数を超える)の下でそこに新しいベクタエントリことを絞るの方法がないと思いますが、それは私が達成したいものですとにかく だから私は、既存の出力ファイルを読み込み、ベクトルに入れて、古いファイルを置き換えなければならないと思いますか?私はこのようななめらかで開始:この
より32.247
SMA
32.325
..rather:
double indicators::SMACurrentWrite() {
if (!boost::filesystem::exists("./CalculatedOutput/SMAcurrent.csv")) // std::cout << "Can't find my file!" << std::endl;
{
std::ofstream SMAfile;
SMAfile.open("./CalculatedOutput/SMAcurrent.csv", ios::app);
SMAfile << "SMA" << endl << SMA[0] << endl; // .. or with '\n' at the end.
SMAfile.close();
}
else {
std::ofstream SMARfile("./CalculatedOutput/SMAReplacecurrent.csv");
std::ifstream SMAfile("./CalculatedOutput/SMAcurrent.csv");
SMARfile << SMA[0] << endl; // Writing data to file
SMARfile << SMAfile.rdbuf();
SMAfile.close();
SMARfile.close();
std::remove("./CalculatedOutput/SMAcurrent.csv");
std::rename("./CalculatedOutput/SMAReplacecurrent.csv","./CalculatedOutput/SMAcurrent.csv");
}
return 0;
}
....が、ちょうどこのようなヘッダーの上に新しいデータを置くもちろん
SMA
32.247
32.325
私はむしろ、このような時間を費やすような運動にはならないでしょうが、私はこれをどうやってやることができるかについて助けてくれてありがとうと思います。
を正確にあなたがわからない何を:1)2)のファイルに新しい行を書き、既存のファイルからヘッダ行を読み取り、新規ファイルに書き込みます3)残りの元のファイルを読み込んで新しいファイルに書き込む。あなたは既にそのすべてをやっているようです、既に仕事の95%。 'SMARfile << SMA [0] << endl;'の前に 'std :: getline'を使って入力ファイルからヘッダ行を読み込み、出力ファイルに書き出します。終わり。 –
毎回ファイル*を最初から作り直してみませんか?古い内容をメモリに読み込んだり、メモリ内のコピーを修正したり、新しいファイルに書き出したり、新しいファイルを古いファイルとして名前を変更したりする必要はありません。 –
はい、実際には多くの作業が行われました。入力いただきありがとうございます。私はそれを眠りの欠如に置く必要があります... – PushT