添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

C++之 fstream open函数( error: no matching function for call to ‘std::basic_ifstream<char>::open(const)

最新推荐文章于 2024-04-22 17:09:22 发布
最新推荐文章于 2024-04-22 17:09:22 发布 阅读量7.3k

以上可以看到,fstream::open有两种重载方式

1:open( const char* filename, ios_base::openmode mode=ios_base::in | ios_base::out);(可以看出 这种写法明显是为了兼容C的写法。);

2:  open( const string& filename, ios_base::openmode = ios_base::in | ios_base::out);

可以看到open函数是打开由参数filename标识的文件,将其与流对象相关联,以便对其内容执行输入/输出操作。参数mode指定文件打开的模式。

然后再来看下open函数的参数:

可以看到,上面出问题的地方就在于filename;即filename是要打开的文件名的字符串。 其格式和有效性的细节取决于库的实现和运行环境。

通过上述文档并没有明确找到以上问题的原因。但有说到 其格式和有效性的细节取决于库的实现和运行环境。 那么在windows(Dev C++)上是否有这类问题呢?

可以发现,同样的写法在windows下是没有问题的,那么linux为什么会出问题呢?

linux forums 找到这句话 C++ ofstream::open won't accept string as a filename

因此  根据以上可以推知,linux下会出问题原因就在于string不能直接作为fstream的参数直接传入。

所以 更改如下:

即可顺利通过编译了。

C++之 fstream open函数( error: no matching function for call to ‘std::basic_ifstream<char>::open(const) C++使用fstream进行文件读写,非常的方便,但是在日常使用的时候,常常会忽视掉一些小问题,如下:环境: Ubuntu16.04 g++: 5.4.0例如以上代码,在编写时可能察觉不到问题的所在,但编译时就会报如下错:但是原因何在呢?因为我们这样写是没问题的:那么首先来看下ifstream 的open成员函数官方文档是如何介绍的。...
C++ fstream open 函数 error : no matching function for call to ‘ std :: basic _ ifstream :: open ( const C++ 使用 fstream 进行文件读写,非常的方便,但是在日常使用的时候,常常会忽视掉一些小问题,如下: 类定义为: 出现的问题的 open 函数 : 但是看上去确实没什么问题,看官方文档: 可以看出,f...
void open ( const char * filename, ios_base:: open mode mode = ios_base::in | ios_base::out); 其中 filename 为文件名字 open mode 如下: in input 以读的方式打开,即input 内存
C++ 出现no matching function for call to ‘Player_inf::Player_inf()‘的问题解决,报错文件为tuple(VScode)
fstream 类中,有一个成员 函数 open (),就是用来打开文件的,其原型是: void open ( const char * filename,int mode,int access); filename:  要打开的文件名 mode:    要打开文件的方式 access:   打开... ofstream 是从内存到硬盘, ifstream 是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在 C++ 中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(&l...
要从文件中读取数据,但是总是打不开文件。 反复调试查看,发现 open 调用失败,但是文件的目录,是自己获取的绝对目录         使用GetModuleFileName(NULL,filepath,sizeof(filepath));方法获取的当前应用程序的目录,在拼接成在即要打开的文件的目录,反复验证后,目录的路径是没有问题的。 但是结果就是打不开文件,读取不到自己想要的东西。 rtl-&gt;push_back(make_pair&lt;string, int&gt;(str, pos)); 在redhat6上编译无问题,在centos7上编译出现错误: no matching function for call to 'make_pair( std ::string&amp;, size_t&amp;)' ,这是由于 1 定义于头文件 &lt;utility&g...
C++之 fstream open函数( error: no matching function for call to ‘std::basic_ifstream<char>::open(const)