在用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*。
推荐阅读
- 禄口■南京禄口国际机场要求成都旅客“原路返回”?机场回应
- |乌合麒麟再发《致莫里森》 要中国道歉是无理要求
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 陶晶晶|20岁网红身价过亿,却遭中年总裁骗婚生子,还被要求把儿子给原配
- Java工程师和C++工程师在工作上有啥区别哪个更适合自身发展
- 某些公司招聘要求中的精通mysql是啥程度
- 互联网企业对非技术岗的人才有啥要求
- 阿富汗|外交部回应澳总理要求中方道歉:阿富汗人民的命也是命
- 怎样使用opengl高效的绘制
- 辐射|剪断整栋楼网线,后被告上法庭孕妇怕辐射要求邻居关掉wifi
