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->push_back(make_pair<string, int>(str, pos));
在redhat6上编译无问题,在centos7上编译出现错误:
no
matching
function
for call to 'make_pair(
std
::string&, size_t&)'
,这是由于
1 定义于头文件 <utility&g...
C++之 fstream open函数( error: no matching function for call to ‘std::basic_ifstream<char>::open(const)