experiment:use rsize let std::wstring.compare is right

来源:互联网 发布:淘宝一钻卖家发布数量 编辑:程序博客网 时间:2024/06/14 08:45
/// @file srcTestStringCompare.cpp/// use rsize let std::wstring.compare is right/// 今天遇到了std::wstring.compare两个相同的串, 却不相等的怪现象~#include "stdafx.h"#include <Windows.h>#include <tchar.h>#include <string>#define G_STR_PATH_NAME_T("c:\\test.txt")BOOLGetPathName(TCHAR * lpcPathName, size_t nLenPathName);int _tmain(int argc, _TCHAR* argv[]){INTiRc=0;std::wstringstrObj;strObj.resize(_MAX_PATH);///< 这么用, 是不想定义一个固定size的Bufferif(GetPathName((TCHAR *)strObj.c_str(), _MAX_PATH)){iRc = strObj.compare(G_STR_PATH_NAME);_tprintf(_T("%s and %s is %s\n"),strObj.c_str(),G_STR_PATH_NAME,(0 == iRc) ? _T("same") : _T("different"));}/// run results/**/// if we call std::wstring.rsize once, compare is wrongc:\test.txt and c:\test.txt is different*/strObj.resize(_MAX_PATH);if(GetPathName((TCHAR *)strObj.c_str(), _MAX_PATH)){strObj.resize(_tcslen(strObj.c_str()));///< very important, because we call std::wstring.rsize onceiRc = strObj.compare(G_STR_PATH_NAME);_tprintf(_T("%s and %s is %s\n"),strObj.c_str(),G_STR_PATH_NAME,(0 == iRc) ? _T("same") : _T("different"));}/// run results/**/// if we cal std::wstring.rsize once, need call rsize THE right string lengthc:\test.txt and c:\test.txt is same*/getchar();return 0;}BOOLGetPathName(TCHAR * lpcPathName, size_t nLenPathName){if((NULL == lpcPathName)||(nLenPathName < _tcslen(G_STR_PATH_NAME))){return FALSE;}_tcscpy(lpcPathName, G_STR_PATH_NAME);return TRUE;}


原创粉丝点击