从标准中读取字符串

Reading String From Stdin

本文关键字:字符串 读取 标准      更新时间:2023-10-16

我有这个代码从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),但我希望有一个更好的选择。

谢谢。

您可能应该读入一个字符左右的向量,这样如果您真的有任意二进制数据,就不会给人留下"文本"的印象:

#include <iostream>
#include <vector>
// ...
std::vector<char> buf(size);
std::cin.read(buf.data(), buf.size());
// all done, will clean up after itself!
int size = std::atoi(m_content_size);
std::string buffer(size);
fread(&buffer[0], 1, size, stdin);

尽管您可以使用cin(以及更适合的容器,如果它不是字符串而只是原始二进制数据)