// CStringTest.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <string>
#include <atlstr.h> using namespace std; static std::string U2A(CString cstring)
{
if (::IsBadStringPtr(cstring,-))
return ""; int cchStr = ::WideCharToMultiByte(CP_ACP, , cstring, -, NULL, , NULL, NULL);
char* pstr = new char[cchStr + ];
if(pstr != NULL)
::WideCharToMultiByte(CP_ACP, , cstring, -, pstr, cchStr, NULL, NULL); pstr[cchStr] = '\0';
std::string str(pstr);
delete []pstr;
return str;
} static CString A2U(const std::string& sstring)
{
int cchStr = (int) sstring.length() + ;
wchar_t* pwstr = new wchar_t[cchStr];
if(pwstr != NULL)
::MultiByteToWideChar(CP_ACP, , sstring.c_str(), -, pwstr, cchStr); CString strTmp(pwstr);
delete []pwstr;
return strTmp;
} int _tmain(int argc, _TCHAR* argv[])
{
CString cstr = _T("this is cstring");
//正确
string str = U2A(cstr);
const char *p = str.c_str();
//正确
std::string p1 = (U2A(cstr)).c_str();
//错误 //错误可能原因:U2A函数返回的是string类型局部变量,
//出了函数范围,局部变量指针被释放,但是开辟的内存区域还没有释放,
//由于没有像上面那样用string类型对象重新开辟内存用于接收返回的局部变量的内容。
//const char* p2 指向了已经释放了的指针
const char* p2 = U2A(cstr).c_str(); //错误
cout << p << endl;
cout << p1 << endl;
cout << p2 << endl;
system("pause");
return ;
}

最新文章

  1. 借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘
  2. pg gem 安装(postgresql94)
  3. UCanCode发布升级E-Form++可视化源码组件库2014 全新版 (V20.01)!
  4. Python之文件读写
  5. VC6.0和VS2010转换时经常遇到的问题
  6. l来自wentao:项目加入缓存(redis),实时调试时用 -----可视化缓存,flushdb
  7. FTS抓包看L2CAP Connection的建立(二)
  8. M - 昂贵的聘礼 - poj1062
  9. MySQL 触发器例子(两张表同步增加和删除)
  10. 解决xcode7.3的一个bug的方法
  11. 移动web开发经验
  12. 汇编指令-adr与ldr伪汇编区别(8)
  13. 【深圳】大湾区第三次.NET技术交流会(网络直播)
  14. Exchanger兄弟线程间数据信息交换
  15. 在linux服务器上搭建nvidia-docker环境
  16. 第一章 Bootstrap简介
  17. tomcat设置错误页面
  18. Learning-Python【6】:Python数据类型(2)—— 列表、元组
  19. ajax全选、全不选、反选、单删/批删
  20. node api 之:stream - 流

热门文章

  1. 面试-Hash是怎么实现的?
  2. asp.net显示用户信息
  3. php和js以及ts的传值
  4. Oracle 外键约束子表、父表
  5. Winform中导入exicel文件
  6. C中结构体的存储分配
  7. LPD打印机服务是什么意思
  8. Python递归实现汉诺塔
  9. 基于wsdl2java訪问外来service服务
  10. Ubuntu之Docker安装