MFC CString 字符串读取配置文件路径与直接赋值路径导致读取结果不同的解决办法

案例如下:

方法一:从配置文件读取路径

  GetPrivateProfileString("parameter", "sourcefacespath", "NULL", strWindow.GetBuffer(1024), 1024, m_inipath);    

  //strWindow.ReleaseBuffer(1024);  //加上这一句,也获取不到路径下的文件
  CString m_folderPath = strWindow; 

CString strWildCard =m_folderPath ;

strWildCard += "\\*.*";

方法二:直接赋值

CString m_folderPath ="\\\\192.168.1.132\\Users\\ZJS\\Desktop\\facesSample"; 

CString strWildCard =m_folderPath ;

strWildCard += "\\*.*";

结果是:方法二可以从路径中获取文件,而方法一不可以;

解决方法:

GetPrivateProfileString("parameter", "sourcefacespath", "NULL", strWindow.GetBuffer(1024), 1024, m_inipath);    

  strWindow.ReleaseBuffer();  //括号里不能加数据长度

原因分析:

GetPrivateProfileString读取配置文件字符串数据时需指定字符串长度,而往往指定的字符串长度都大于实际字符串长度,从而导致下面字符串拼接时出现问题,所以需要手动释放多余空的字符(调用ReleaseBuffer()方法释放,切结括号里面不能添加数据长度,否则会无效)

以上是自己的经历,及简单理解,没有深入研究,仅供参考,只是希望对遇到相同情况的同行能有所帮助。

有不妥之处,欢迎指定,感激不尽!

发布了15 篇原创文章 · 获赞 20 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ZDT_zdh/article/details/100113504