Я тестировал, как читать данные из std::streamstring
, но я ошибаюсь, мог ли кто-нибудь указать, в чем проблема? и дать правильный способ его прочитать?Чтение содержимого из строки stream
Мой код тестирования:
#include <iostream>
#include <string>
#include <sstream>
#define BUFFER_SIZE 16
int main(int argc, char ** argv)
{
std::stringstream ss;
ss << "Un texto con datos de ejemplo para probar la extacción de un stream";
std::cout << "Stream contents: '" << ss.str() << "'" << std::endl;
char buffer[BUFFER_SIZE] = {0};
std::streamsize read = 0;
do {
read = ss.readsome(buffer, BUFFER_SIZE - 1);
std::cout << "Read: " << ss.gcount() << std::endl;
std::cout << buffer << std::endl;
std::cout << "---" << std::endl;
std::fill(buffer, buffer + BUFFER_SIZE, 0);
} while (read > 0);
return 0;
}
И я получаю выход:
Stream contents: 'Un texto con datos de ejemplo para probar la extacci¾n de un stream'
Read: 15
Un texto con da
---
Read: 15
tos de ejemplo
---
Read: 15
para probar la
---
Read: 15
extacci¾n de un
---
Read: 5
stre
---
Read: 0
---
Как вы можете заметить, что последняя операция чтения читает только 5 символов оставляя два последних «утра «хотя он должен был прочитать его. Мне не хватает сотового?
Думаю, вам нужно работать с версиями потоков и строк 'wchar_t'. – Nawaz
Замена '' правильного результата 'o' на тот же результат. Зачем мне нужно работать с 'wchar_t'? –
Я скопировал ваш код в .cpp-файл и скомпилировал его с помощью g ++ без аргументов. На моей машине весь поток печатается без усечения, но первое чтение только захватывает один символ. Я использую gcc 4.9.2 и glibc 2.21-3. –