脱了裤子放屁之std::string

一个天天跟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()); //又一次赋值.


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












转载于:https://www.cnblogs.com/lxjshuju/p/6873357.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值