因为前些日子一个小程序的需要,而我自己又不是很熟悉VC编程,倒是对stl了解了一点,因此在利用MFC创建了界面之后就有一个数据转换的问题,经过网上搜索、查看MSDN、加上自己实践,终于发现CString到std::string的转换的方法,故立此存照,以备后查。
因为我用的是Unicode编码,所以采用的是如下方法:
CString m_Serial;
//
定义的CString类型的字符串,也可以从MFC创建的变量中传递进来
size_t i; // 转换后的串中字符的个数
size_t buff = m_Serial.GetLength() * 2 ; // 因为是Unicode编码方式,所以每个字的存储空间是双字节
char * p = new char [buff]; // 动态分配转换后的所需存储空间
wcstombs_s( & i, p, (size_t)buff, m_Serial, (size_t)buff ); // 调用wcstombs_s实现转换,注:用wcstombs函数会发生C4996警告。
std:: string out = p; // 将p赋值给std::string类型的变量,实现到std::string的转换
if (p) // 清理p的内存空间
free(p);
size_t i; // 转换后的串中字符的个数
size_t buff = m_Serial.GetLength() * 2 ; // 因为是Unicode编码方式,所以每个字的存储空间是双字节
char * p = new char [buff]; // 动态分配转换后的所需存储空间
wcstombs_s( & i, p, (size_t)buff, m_Serial, (size_t)buff ); // 调用wcstombs_s实现转换,注:用wcstombs函数会发生C4996警告。
std:: string out = p; // 将p赋值给std::string类型的变量,实现到std::string的转换
if (p) // 清理p的内存空间
free(p);