У меня есть функция, предназначенная для получения содержимого файла:
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;
}
Когда я запускаю эту функцию, длина файла всегда определяется точно.Однако, если я вызываю функцию один раз с файлом, вызываю ее снова с несуществующим файлом, а затем вызываю ее еще раз с исходным файлом, строка символов 'buffer' больше, чем int 'length'.
Что ж, это может быть неточно, скорее - когда строка «буфер» копируется в строку «код», «код» длиннее, чем «длина».В каждом случае 'code' создается непосредственно перед вызовом 'getFileContents', поэтому это не относится к предыдущему значению.
Это также, кажется, происходит, если я получаю содержимое файла, впоследствиидобавьте или удалите некоторый текст из файла и снова извлеките его содержимое.
У меня мало опыта со строками символов, и я понимаю, что я их не правильно использую, но пришел код, который я используюиз примера, и я не могу на всю жизнь найти что-то не так с ним.
Спасибо за любую помощь, Уайетт