Я пытаюсь добавить сторожа ("\ r \ n \ r \ n") для ответа HTTP на std::string
в C ++.Однако, когда я добавляю данные, я получаю целую кучу дополнительных вещей: ^[[?62;9;c^[[?62;9;c[
, после чего завершается работа моих программ.Затем в командной строке записывается следующее: 62;9;c62;9;c62;9;c62;9;c62;9;c62;9;c
.Кажется, что это происходит только с файлами .jpg / .gif. Я проверил и проверил один и тот же метод работы с текстовыми и HTML-файлами.
Контекст заключается в том, что я пытаюсь записать эту строку в сокет, используя string.c_str()
.Я проследил дополнительные символы до операции добавления, которую я выполняю после прочтения нужного файла.Я думаю, что это сбрасывает мою расчетную длину контента, вызывая сбой.Поэтому мне просто нужно знать, почему этот дополнительный материал заканчивается в моем string.c_str()
?
РЕДАКТИРОВАТЬ: Вот мой код чтения файла.(Забыл вставить его) (BUFFER_LENGTH # определяется как 1024)
int fd = open(filename.c_str(),O_RDONLY);
int bytesRead = 0;
char buffer[BUFFER_LENGTH];
string content = "";
while((bytesRead = read(fd, buffer, BUFFER_LENGTH)) !=0)
{
if(bytesRead==-1)
{
if(errno == EINTR)
{
printf("\nERRONO");
continue;
}
else
{
printf("\nclosing fd");
close(fd);
}
}
content+= buffer;
}
close(fd);
//Printing content.c_str() here gives right value
content += "\r\n\r\n";
//Printing content.c_str() here gives the gibberish, and crash when I write it to the socket.
return content;
Вот как я пишу в сокет (fdToUse - сокет):
write(fdToUse, response->fullResponse.c_str(), response->fullResponse.length());
close(fdToUse);