Я использую C ++, Visual Studio 2010 Premium на Windows 7, и в моем приложении у меня есть переменная std :: string, которая завершается неудачно при добавлении :( ...
Ситуация такова, что строковая переменная содержит огромное количество символов, добавляемых в разное время, впервые я добавляю, например, 7609 байт, второй раз 8184 и, наконец, 1463, что-то вроде
std::string str;
long bytesRead;
char buffer[BUFFER_SIZE];
do {
bytesRead = ReadChars(buffer, BUFFER_SIZE -1);
buffer[bytesRead] = 0; // I omitted this line before, but it was in the original code
if (bytesRead > 0)
str += buffer; // I'm already taking care of the char 0 at the end :)
} while (bytesRead > 0);
, поэтому каждый раз, когда я вызываю + = (или добавляю, тот же результат), он добавляет дополнительную строку (последние 7 или 8 символов из исходного буфера), например
оригинальный буфер заканчивается
"строка добавлена"
после добавления str заканчивается
"строка присоединена добавлена"
Кто-нибудь знает, если это известная проблема? или, может быть, если я что-то пропустил
Я включил это в комментарии внизу, но, может быть, лучше, если бы я тоже добавил это сюда
ReadChars : прочитать последовательность символов и вернуть количество прочитанных байтов
bytesRead : если чтение, оно> 0 ... так что все в порядке, если буфер считается ASCIIZ,
Я пытался с функцией добавления, но получить то же поведение (например, str.append (буфер);)
С уважением
Jorge