ifstream的open函数问题

在VC6.0上编写某个读取文件的控制台程序时,出现这样一个错误。
cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::

而我的代码非常简单,我感觉完全不存在错误。

bool ReadFile(string path)  
{  
    ifstream istream;   //读文件流  
    istream.open(path);  
}


在网上找了很多解决方法,最后得出的方法是:在路径字符串后面加上.c_str()。

因为open()成员函数的参数是一个char *类型的量,要通过调用 string类的c_str()函数返回一个C风格的字符串(也就是一个字符数组的首地址,即char *值)才可以调用open()函数。

我照着上面的方法改了,问题解决了。但我有一点疑问的是,有时候使用ifstream的open函数不存在这个问题,但有时候怎么有出现这个问题。我个人估计与VC6.0编译器有问题,感觉是这个编译器在字符串的支持上没有做好。




原文地址:https://www.cnblogs.com/finlay/p/3234723.html