c ++ Чтение X байтов из std :: cin и усечение строк до длины X байтов - PullRequest
1 голос
/ 01 мая 2009

У меня есть программа на С ++, которая принимает данные из канала Linux и выводит в std :: cout для дальнейшей обработки.

В настоящее время мой код выглядит так:

std::istreambuf_iterator<char> it(std::cin);
std::istreambuf_iterator<char> end;
std::string str(it, end);

//Lots of string manipulation here.

str = str.substr(0, 65535);
std::cout << str << std::endl;

Это расточительно, потому что входящие строки огромны.

  1. Как мне прочитать только около 100 КБ cin в строку c ++ и игнорировать остальные?
  2. Как я могу обрезать строку c ++ до 65535 байт вместо символов? (Мне нужно будет обрабатывать многобайтовые символы в будущем.)

1 Ответ

2 голосов
/ 01 мая 2009
  1. std :: cin.read (& buf, 100 * 1024);
  2. std :: string.size () возвращает num байтов, я вполне уверен.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...