Чтение строки из Stdin - PullRequest
       1

Чтение строки из Stdin

1 голос
/ 21 декабря 2011

У меня есть этот код, который читает из stdin в char*. Возможно ли сделать это прямо в std::string?

int size = std::atoi(m_content_size);
char* buffer;
buffer = (char*)malloc(size);
fread(buffer, 1, size, stdin);

...

free(buffer);

Полагаю, я мог бы сделать std::string sBuffer(buffer), но я надеюсь, что есть лучшая альтернатива.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

Вам, вероятно, следует прочитать вектор символов или около того, чтобы не создавалось впечатление, что у вас есть "текст", если у вас действительно есть произвольные двоичные данные:

#include <iostream>
#include <vector>

// ...

std::vector<char> buf(size);
std::cin.read(buf.data(), buf.size());

// all done, will clean up after itself!
2 голосов
/ 21 декабря 2011
int size = std::atoi(m_content_size);
std::string buffer(size);
fread(&buffer[0], 1, size, stdin);

хотя вы могли бы использовать cin (и более подходящий контейнер, если это не строка, а просто необработанные двоичные данные)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...