发布日期:2018-03-26
C++如何从cin(标准输入)读取EOF出现之前的数据?+ 查看更多
C++如何从cin(标准输入)读取EOF出现之前的数据?
+ 查看更多
发布日期:2018-02-26 10:27
分类:CPlusPlus
浏览次数:420
我的代码需要从用户输入中读取数据。我想知道如何才能从标准输入中读取EOF出现之前的所有的数据。
我考虑使用cin.get( input, '\0' ),但是'\0'并不是EOF字符,所以不管EOF和'\0'哪个先出现都会导致读取结束。
或许使用循环是唯一的方法?如果真的这样,最好的方法是什么?
回答:
从stdin(标准输入)中读取长度未知的数据的唯一方式是使用循环。
使用std::geline()函数是一种比较好的方法:
std::string line; while (std::getline(std::cin, line)) { std::cout << line << std::endl; }
但是getline()默认读取一行。你可以自定义终止符,但是EOF不是一个字符,你不能在getline()中调用。