一个天天跟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

脱了裤子放屁之std::string相关推荐

  1. 关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题

    使用string时发现了一些坑. 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新. 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧. ...

  2. ATL::CStringA和std::string之间转换的一些误区

    对于刚做windows下VC的开发同学,类型转换应该是一个令其很苦恼的问题.我刚写工作的时候,也为这类问题不停的在网上搜索转换方法.最近工作中遇到一个"神奇"的bug(一般&quo ...

  3. C++/C++11中std::string用法汇总

    C++/C++11中std::string是个模板类,它是一个标准库.使用string类型必须首先包含<string>头文件.作为标准库的一部分,string定义在命名空间std中. st ...

  4. std::string的find问题研究

    https://files-cdn.cnblogs.com/files/aquester/std之string的find问题研究.pdf 目录 目录 1 1. 前言 1 2. find字符串 1 3. ...

  5. 在C++中对字符串std::string使用switch/case语句

    如果你使用C语音的string,也就是char *,是可以放在switch/case语句中的. 在C++中是不能对字符串string使用switch/case语句的,这里的string指的是std:: ...

  6. 将整个ASCII文件读入C ++ std :: string [重复]

    本文翻译自:Read whole ASCII file into C++ std::string [duplicate] This question already has an answer her ...

  7. 如何将std :: string转换为const char *或char *?

    如何将<code>std::string转换为char*或const char* ? #1楼 看看这个: string str1("stackoverflow"); c ...

  8. c++ uint8_t* to std::string

    Convert uint8_t* to std::string in C++? [duplicate] 正确写法: https://stackoverflow.com/questions/450891 ...

  9. QString与std::string的相互转换

    QString与std::string的相互转换 原创 2014年07月07日 16:25:53 4011 [cpp] view plain copy //1 QString与int相互转换 QStr ...

最新文章

  1. predicate java 作用_Java函数式编程接口详解之Predicate
  2. px/em/pt区别和转换
  3. android 高级项目,从零开始的Android新项目8 - Data Binding高级篇
  4. Linux高性能server编程——高级I/O函数
  5. 如何处理SAP Launchpad上tile打不开的问题
  6. 小大整数对象池及intern机制
  7. linux nand 坏块_韦东山-NAND 上面都是坏块怎么办啊? - 百问网嵌入式问答社区
  8. FA_固定资产六大业务增加、修改、报废、在建、折旧、盘点概述(概念)
  9. linux fastboot 工具,fastboot工具(FastbootCommander)
  10. 从零开始学androidchronometer计时器组件.三十二.
  11. python爬取付费音乐包_python爬虫如何下载QQ音乐付费歌曲2020最新版
  12. linux下find搜索jpg格式图片,Linux文件查找命令-find
  13. android studio翻译插件Translation使用。。
  14. 估计值与平均值的离差平方和_各变量值与其算术平均数的离差平方之和为()
  15. (转)TTime, TDateTime
  16. @PreAuthorize、@Secured、 @RolesAllowed优先级
  17. 关于功能结构图 信息结构图 产品结构图那点小事
  18. 怎么退出自适应巡航_定速巡航与自适应巡航到底哪个更强?如何正确使用这些功能?...
  19. 同一局域网下,一台电脑连接另一台电脑的虚拟机(从属机(window)连接主机(window)虚拟机(Linux)的连接流程)
  20. oracle 11g duplicate database基于备份复制数据库(四)

热门文章

  1. JS实现网页开关灯效果
  2. 如何计算2个矩阵的相似性?
  3. 巨子生物在香港上市:薇娅突击入股,范代娣、严建亚夫妇提前套现
  4. ARM Translation 下载 | ARM Translation Download
  5. ACM斗牛游戏算法JAVA实现
  6. 码农饭碗不保——ChatGPT正在取代Coder
  7. OnInit和OnLoad
  8. VGG网络讲解——小白也能懂
  9. INSERT DESC UPDATE SELECT
  10. Hashtable和hashMap有什么区别