infileName.c_str()中的为什么要加.c_str()

zyq2406 2006-12-08 10:57:27
string infileName = "code.txt";
ifstream inoutfile (infileName.c_str());
中的为什么要加.c_str()是什么意思
...全文
229 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
OOPhaisky 2006-12-08
  • 打赏
  • 举报
回复
infileName.c_str()
----------------------------------------------------------------------------------
返回字符串infileName内部的char指针(而且是一const char*方式返回的,避免在string的控制之外对string的内容进行修改)。
HappyTree 2006-12-08
  • 打赏
  • 举报
回复
参考1、2楼,再补充一点string与c_str的
c风格的字符串是可以隐式转换成string的,但string无法隐式转换成c风格的字符串,至于原因,很多讲解string的书籍都会涉及的。
为了把string转换成ifstream可以接受的类型,必须把string转换为c风格的字符串。
zyq2406 2006-12-08
  • 打赏
  • 举报
回复
我是c++新手能不能详细一点啊??谢谢!!!
mochen5460 2006-12-08
  • 打赏
  • 举报
回复
IO标准库使用C风格字符串而不是C++ string类型字符串作为文件名。所以需要用c_str获取C风格字符串
rester214 2006-12-08
  • 打赏
  • 举报
回复
inoutfile的构造函数接受的是LPCSTR类型的参数,而infileName是string型的,需要转换。
0黄瓜0 2006-12-08
  • 打赏
  • 举报
回复
ifstream inoutfile (这里要求的参数类型是const char*,不是std::string,infileName.c_str()就是将一个string转换为const char*);

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧