我必须编写一个函数,通过逐行读取文本文件来验证数字。我的问题是这是一个const流。我认为创建一个新流会有所帮助,但我的代码没有正确编译。
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,我该怎么做才能读取流?
答案 0 :(得分:3)
std::istream
专门设计为不允许复制,因此您使用test
变量将无效。
删除test
变量,从const
参数中删除n_is
,并将n_is
直接与std:::getline()
一起使用:
bool validateNumber(std::istream& n_is)
{
std::string line;
while (std::getline(n_is, line)) // read line
{
...
}
}