【发布时间】:2018-03-17 16:58:40
【问题描述】:
我必须编写一个函数,通过逐行读取文本文件来验证数字。我的问题是这是一个常量流。我认为创建一个新流会有所帮助,但我的代码编译不正确。
bool validateNumber(const std::istream& n_is)
{
while (!n_is.eof())
{
std::string line;
std::istream test = n_is;
std::getline(test,line); // read line
我收到此错误消息:
/usr/include/c++/5/bits/ios_base.h:855:5: 错误:'std::ios_base::ios_base(const std::ios_base&)' 是私有的。
我应该怎么做才能读取流,即使它是 const 的?
【问题讨论】:
-
什么是“常量流”?上次我检查时,没有这样的东西,如果有,你将无法从中读出一个字符。因为是
const? -
无法复制 iostream。
std::istream test = n_is;尝试复制。在 c++11 中出现delete函数之前,最好的解决方案是创建函数private。这就是你所遇到的。赋值运算符是private。 -
顺便说一句,
while (!n_is.eof())是个坏主意。更多信息:Why is iostream::eof inside a loop condition considered wrong?
标签: c++ constants getline istream