为了澄清,我指的是字符串类中的全局getline()函数。
我想做的是拥有这样的东西:
int main()
{
wifstream in(L"textfile.txt");
someFunc(in);
return 0;
}
void someFunc(const wistream& read)
{
wstring buff;
while(getline(read, buff))
{
//do some processing here
}
}
但我得到了:
Error 2 error C2664: 'std::getline' : cannot convert parameter 1 from 'const std::wistream' to 'std::basic_istream<_Elem,_Traits> &'
为了解决这个问题,我需要从const wistream&amp;中删除const。读。我理解为什么会发生这种情况但是可以配置getline()来接受wistream而不需要任何转换,或者我应该忽略它并删除const?
答案 0 :(得分:4)
它接受一个wistream,但getline()需要一个非const参数,因为它修改了流。尝试将其更改为:
...
void someFunc(wistream& read)
...
答案 1 :(得分:3)
从流中读取字符会修改流。您无法标记流const并期望它能正常工作。
答案 2 :(得分:0)
根据经验,
const
引用传递const
/非 - const
会成为样式问题)const
引用传递 Streams是该规则的一个值得注意的例外,因为它们必须始终作为非const
引用传递。