目前我的程序使用字符串作为输入,我使用argc and argv
然后我用
FILE *fp, *input = stdin;
fp = fopen("input.xml","w+b");
while(fgets(mystring,100,input) != NULL)
{
fputs(mystring,fp);
}
fclose(fp);
我做这部分只是为了创建一个文件 input.xml 然后我提供给
ifstream in("input.xml");
string s((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>());
将s
作为字符串(基本字符串)。
有没有办法直接将我的输入提供给ifstream
? (即将字符串送到ifstream
)。
答案 0 :(得分:1)
让我直截了当地说:
那个疯狂的谈话!
删除文件流,直接从STDIN实例化字符串:
string s(
(std::istreambuf_iterator<char>(std::cin)),
std::istreambuf_iterator<char>()
);
请记住,std::cin
是std::istream
,标准库的IOStreams部分是为这种通用数据访问而设计的。
请注意your approach with std::istreambuf_iterator
is not the most efficient,如果您正在阅读大量数据,这可能是一个问题。
答案 1 :(得分:0)
如果我说得对,那么你想把通过标准输入提供的所有文本都读成字符串。
实现这一目标的一种简单方法可能是使用std::getline
,它将特定分隔符的所有字节读取到字符串中。如果您认为它是文本内容(不包含任何\0
- 字符),您可以编写以下内容:
std::string s;
std::getline(cin,s,'\0');