@Sneiksus

Как не обрезать стркоу после \0?

Мне нужно послать строку байтов с помощью функции sendTo (winsock библиотека). Она принимает указатель на С строку. Размер моей строки 20 знаков, при этом на 11 позиции в строке, есть символ '\0' . Соответственно посылается только первых 10 символов, а все что идет после символа конца строки - обрезается. Как этого избежать?

fstream fs;
    fs.open(txt, ios_base::in | ios_base::binary);
    int fileSize = experimental::filesystem::file_size(txt) + 1;
    char* bytes = new char[fileSize];
    fs.read((char*)bytes, fileSize);
    sendto(sock, bytes, fileSize, 0, (sockaddr*)&clientAddr, sizeof(clientAddr));
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 2
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Все sendto, что я знаю, принимают указатель и размер в байтах. Именно из-за возможности нулевых байт.
Ответ написан
Комментировать
Griboks
@Griboks
Если учесть, что строки как таковой не существует, то она и не обрезается.
fs.read((char*)bytes, fileSize)
Вот в этой строчке вы сами её (не строку, а массив чаров) обрезаете по fileSize.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы