码迷,mamicode.com
首页 > 其他好文 > 详细

脱了裤子放屁之std::string

时间:2014-07-18 22:24:31      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:c++ stdstring

一个天天跟c#奋斗的苦逼c++程序员 改自己以前代码的时候发现有如下几行.


char szPath[MAX_PATH] = {0};

GetModuleFileNameA(NULL,szPath,sizeof(szPath));


std::string strPath = szPath;

std::string strDir = strPath.substr(0,strPath.find_last_of(‘\\‘));


感觉不爽了,怎么又有char数组 又有string,都用string岂不是更好.

于是改为如下代码:


std:: strPath;

strPath.reserve(MAX_PATH);

GetModuleFileNameA(NULL,&strPath[0],MAX_PATH);

std::string strDir = strPath.substr(0,strPath.find_last_of(‘\\‘));


OK 改完了. 一跑.........尼玛功能变了.你懂的.......

strDir为空.


为啥捏,strPath里面虽然有内容了,但API不会给string的size赋值啊.

如果想正确的用string代替char数组,只能采用下面的方式.


std:: strPath;

strPath.resize(MAX_PATH,0);

GetModuleFileNameA(NULL,&strPath[0],strPath.size());

strPath.asign(strPath.c_str()); //重新赋值.


这..........不是拖了裤子放屁吗?












脱了裤子放屁之std::string,布布扣,bubuko.com

脱了裤子放屁之std::string

标签:c++ stdstring

原文地址:http://blog.csdn.net/haha_/article/details/37890589

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!