ファイルの内容をコピーしてから、同じファイルにstd :: ofstreamを作成してからstd :: ostream_iteratorを使ってstd :: copyを使用していますそのstd :: ofstreamをコピーした内容をファイルにコピーし直します。std :: copyは余分な改行文字をコピーしています
私の問題は、各元の行の間に新しい空白行が挿入されることです。ここで
は私のコードです:
std::string firstFile = getFileContents_asString("filepath.txt");
std::ofstream fileOutStream("filepath.txt");
std::ostream_iterator<char> oi(fileOutStream);
std::copy(firstFile.begin(), firstFile.end(), oi);
それはこのようにテキストをとります。
#include "worklogger_pres_model.h"
#include "worklogmodel_container.h"
#include <QSqlRelationalTableModel>
そして、これを行います。デバッガで物事をチェックアウトするには
#include "worklogger_pres_model.h"
#include "worklogmodel_container.h"
#include <QSqlRelationalTableModel>
を、A時最初のデバッグを実行すると、firstFile
文字列にはmodel.h\r\n#includ
のようなストレッチがあります。
2回目のデバッグ実行時に、firstFile
文字列にはmodel.h\r\r\n#includ
のようなストレッチがあります。
なぜ各キャリッジリターンオカレンスごとに余分な\ rまたはキャリッジリターンがファイルにコピーされるのですか?
役に立つと判明した場合は、getFileContents_asStringメソッドを次に示します。
std::string getFileContents_asString(const char * filename) {
std::ifstream f (filename, std::ios::in | std::ios::binary);
if (f) {
std::string buffer;
f.seekg(0, std::ios::end);
buffer.resize(f.tellg());
f.seekg(0, std::ios::beg);
f.read(&buffer[0], buffer.size());
f.close();
return buffer;
} else {
std::cout << "file could not be opened";
return std::string("failure to open file");
}
}
出力ファイルも「バイナリ」モードで開きます。 –