在用C++中,要求用户输入一个文件名,然后通过ifstream来读取文件。为啥要把string变成c string呢

我感觉楼主可能是这个意思:std::ifstream::open需要一个const char*作为参数传进去。
其实是这样的,C++ 11之前只能传入const char*,但是在C++ 11以及之后是允许将filename参数以std::string传进去的。如果你必须要传C-Style String的话可以使用陈聚聚说的std::string::c_str()或者std::string::data()。
【在用C++中,要求用户输入一个文件名,然后通过ifstream来读取文件。为啥要把string变成c string呢】 关于open可以看这里 ifstream::open

■网友
题主的意思是,输入的用户名是字符串,string就可以了,为什么还需要转化成C风格的char *。原因是fstream出现的时候,C++当时还没有内置string,只有char *,string是到了98年才纳入C++标准。C++11修复了这一点。
■网友
c_str()
■网友
string是什么?c string是什么。上面两个东西的本质是在内存中的一段buffer,string是对这段内存的封装。方便操作。具体再深究下去还要看内存中的数据是以什么编码方式存在的,单自己还是双字节,或者其他。另外,如果玩过赛班,里面还有个及其变态的tbuf,我一直不会用,最后都成char*。


    推荐阅读