转换MFC CString 到std::string

std::string CStringToSTDStr(const CString& theCStr)
{
	// Convert the CString to a regular char array
	const int theCStrLen = theCStr.GetLength();
	char *buffer = (char*)malloc(sizeof(char)*(theCStrLen+1));
	memset((void*)buffer, 0, sizeof(buffer));
	WideCharToMultiByte(CP_UTF8, 0, static_cast<cstring>(theCStr).GetBuffer(), theCStrLen, buffer, sizeof(char)*(theCStrLen+1), NULL, NULL);
	// Construct a std::string with the char array, free the memory used by the char array, and
	// return the std::string object.
	std::string STDStr(buffer);
	free((void*)buffer);
	return STDStr;
}</cstring>

转换MFC CString 到std::string

时间: 2024-11-13 04:07:49

转换MFC CString 到std::string的相关文章

CString 与 std::string 相互转化

MFC中CString 与 std::string 相互转化 CString实际是CStringT, 也就是模板类, 在UNICODE环境下,实际是CStringW, 在多字符集环境下,实际是CStringA std::string就是多字符集的. UNICODE环境下 CStringW-->std::string CString实际是CStringW,要转换成多字符集,需进行转码.使用WideCharToMultiByte 转换成多字符集,然后再构造std::string std::strin

CString、std::string格式化字符串

=============================CString================================== 当有多个字串时,比如     int   n1   =   5;     int   n2   =   10;     char   sz1[]   =   "abcdefg";     char   sz2[]   =   "hijklmn";         用std中的string如何写出最简单的代码得到MFC中CStr

mfc CString,string,char* 之间的转换

知识点: CString转char*,string string转char*,CString char* 转CString,string 一.CString转char*,string //字串转换测试 CString CString1; std::string string1; CHAR* char1=NULL; //1 string1=CString1.GetBuffer(); CString1.ReleaseBuffer(); //2 char1=CString1.GetBuffer();

实战c++中的string系列--std::string与MFC中CString的转换

搞过MFC的人都知道cstring,给我们提供了很多便利的方法. CString 是一种很有用的数据类型.它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多.不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习. 但是很多情况下,我们还是需要cstring和string的转换. 分两步: 1把cstring转为char数组 2根据char数组,构造自己的string(记得释放内存) std::string CStringT

MFC-将CString转换成std::string

//将CString转换成const char * int stringLength = ::WideCharToMultiByte(CP_UTF8, NULL, video_path, wcslen(video_path), NULL, 0, NULL, NULL); char* buffer = new char[stringLength + 1]; ::WideCharToMultiByte(CP_UTF8, NULL, video_path, wcslen(video_path), bu

std::string 和 CString问题

std::string stdTemp; CString strTemp; strTemp = stdTemp;    ;//这一步直接赋值可不可以 因为CString可以接受const char*的赋值,而且std::string有个返回const char*的方法,c_str(),所以,应该这样写: strTemp = stdTemp.c_str();

mfc中CString转化为string的方法

LL(1)分析法实验的mfc做到最后因为CString转化为string的问题卡了一个多小时,也是惨,网上各种方法找过都不行.幸亏最后还是找到几行代码搞定了.特此mark一下. USES_CONVERSION; char* s_char = W2A(m_in); inString = s_char;

QString、std::string转换成char*

#include <iostream> #include <QtCore/QString> int main() { QString str_Q("cupcupy北京"); int j = str_Q.length(); //11,一个汉字算两个字符 std::string str_string = str_Q.toStdString(); int i = str_string.length();//11,字符串长度不包括结尾的'/0' //c_str()返回的

C++: std::string 与 Unicode 如何结合?

关键字:std::string Unicode 转自:http://www.vckbase.com/document/viewdoc/?id=1293 一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单.基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于_UNICODE 的值: 1: // abridged from tchar.h 2:  3: #ifdef _UNICODE 4:  5: typedef wchar_t TCHAR; 6:  7: #defi