C++ 使用带有ifstream类成员的getline
编译器错误为:C++ 使用带有ifstream类成员的getline,c++,C++,编译器错误为: 调用“getline(const ifstream&,std::string&)”时没有匹配的函数。 StartScreen.h #包括 #包括 #包括“Screen.h” 类StartScreen:公共屏幕{ 公众: StartScreen(); 虚拟~StartScreen(); 无效常数; void draw()常量; 私人: StartScreen(const StartScreen&)=删除; StartScreen&运算符=(const StartScreen&)=删
调用“getline(const ifstream&,std::string&)”时没有匹配的函数。
StartScreen.h
#包括
#包括
#包括“Screen.h”
类StartScreen:公共屏幕{
公众:
StartScreen();
虚拟~StartScreen();
无效常数;
void draw()常量;
私人:
StartScreen(const StartScreen&)=删除;
StartScreen&运算符=(const StartScreen&)=删除;
std::ifstream屏幕\u内容\u;
};
StartScreen.cpp
#包括“StartScreen.h”
StartScreen::StartScreen(){
屏幕内容打开(“start screen.txt”);
}
StartScreen::~StartScreen(){
屏幕内容关闭();
}
void StartScreen::advice()常量{
}
void StartScreen::draw()常量{
std::字符串行;
如果(屏幕内容打开()){
while(screen\u content\uu.eof()){
std::getline(屏幕内容行);
}
}
}
我的想法是以标准输出打印文本文件中的所有行。使用fstream是正确的方法吗?或者有更好的解决方案?正如上面的评论所说,
draw()
的问题被声明为const
在常量成员函数中,所有成员变量都被视为常量
从流读取会改变流对象(它必须填充流缓冲区并更新流位置),因此不能在常量流上执行此操作
要么将
draw()
设为非常量,要么将screen\u内容
设为可变。如上所述,draw()
的问题声明为常量
在常量成员函数中,所有成员变量都被视为常量
从流读取会改变流对象(它必须填充流缓冲区并更新流位置),因此不能在常量流上执行此操作
要么将
draw()
设为非常量,要么将screen\u内容
设为可变。如上所述,draw()
的问题声明为常量
在常量成员函数中,所有成员变量都被视为常量
从流读取会改变流对象(它必须填充流缓冲区并更新流位置),因此不能在常量流上执行此操作
要么将
draw()
设为非常量,要么将screen\u内容
设为可变。如上所述,draw()
的问题声明为常量
在常量成员函数中,所有成员变量都被视为常量
从流读取会改变流对象(它必须填充流缓冲区并更新流位置),因此不能在常量流上执行此操作
要么使
draw()
非常量,要么使screen\u内容
可变。因为draw()
被声明为const
screen\u内容
也是const
,而getline
将非常量
ifstream作为其第一个参数。通过ifstream
的一个非const
实例,您就可以了。@Captain请回答这个问题。是的@Bledson“完成”了什么?从draw()声明中删除了const
。正如建议的那样,将屏幕内容
声明为可变
也起作用。因为draw()
被声明为const
屏幕内容
也是const
,而getline
将非const
ifstream
作为其第一个参数。通过ifstream
的一个非const
实例,您就可以了。@Captain请回答这个问题。是的@Bledson“完成”了什么?从draw()声明中删除了const
。正如建议的那样,将屏幕内容
声明为可变
也起作用。因为draw()
被声明为const
屏幕内容
也是const
,而getline
将非const
ifstream
作为其第一个参数。通过ifstream
的一个非const
实例,您就可以了。@Captain请回答这个问题。是的@Bledson“完成”了什么?从draw()声明中删除了const
。正如建议的那样,将屏幕内容
声明为可变
也起作用。因为draw()
被声明为const
屏幕内容
也是const
,而getline
将非const
ifstream
作为其第一个参数。通过ifstream
的一个非const
实例,您就可以了。@Captain请回答这个问题。是的@Bledson“完成”了什么?从draw()声明中删除了const
。正如建议的那样,将屏幕内容
声明为可变
也起作用。