ファイルの内容を取得するように設計された関数があります。
bool getFileContents(std::string loc, std::string &code) {
std::ifstream file(loc.c_str());
if(!file.is_open())
return err("Source file could not be read");
int length;
file.seekg(0, std::ios::end);
length = file.tellg();
file.seekg(0, std::ios::beg);
char *buffer = new char[length];
file.read(buffer, length);
code = buffer;
delete[] buffer;
file.close();
return true;
}
この関数を実行すると、ファイルの長さは常に正確に取得されます。ただし、ファイルを使用して関数を1回呼び出し、存在しないファイルを使用して再度呼び出してから、元のファイルを使用してもう一度呼び出すと、文字列「buffer」がint「length」よりも大きくなります。
まあ、それは正確ではないかもしれません-文字列'buffer'が文字列'code'にコピーされるとき、'code'は'length'より長くなります。'code'は、いずれの場合も、'getFileContents'の呼び出しの直前にインスタンス化されるため、前の値の問題ではありません。
これは、ファイルの内容を取得し、その後ファイルにテキストを追加または削除して、同じファイルの内容を再度取得した場合にも発生するようです。
私は文字列の経験がほとんどなく、正しく使用していないことがわかりますが、使用しているコードは例からのものであり、私は一生の間、文字列に問題があることを見つけることができません。
助けてくれてありがとう、ワイアット