CString cstring;
string temp=cstring.GetBuffer(0);
string temp=cstring.GetBuffer(0);
解决方案 »
- 关于字节转换的问题(另开一贴)
- vc++动态加载dll问题
- 超难的字符串比较问题
- 求救:Runtime Error问题
- 关于控件的问题
- 在线等待:如何在鼠标点击一个CListCtrl的列表项的Check方框时获得鼠标的点击消息?
- 可以在对话框上加一行菜单吗?怎么加呢?
- 请问在使用CListCtrl控件时候,如果将选中项目背景的兰色条子去掉,急,谢谢了
- 简单问题:如何判断一个CString型里面是否都是数字?
- 一个问题:用driverStudio在win98下写wdm时出错:说没有一些文件,见内!
- 请推荐几个优秀、小型的C++开源项目,如Notepad++,需要 SDK 设计,架构好
- HDF文件格式的读取,请教
但还是出错了
不知道怎么回事CString a;
string b=a.GetBuffer(0);错误1 error C2440: 'initializing' : cannot convert from 'wchar_t *' to 'std::basic_string<_Elem,_Traits,_Ax>'
CString str;
调用
setlocale(LC_ALL,"chs");
char* p = new char[]足够长
wcstombs( p ,str,str.GetLength() );
std::string out = p;
ASCII编码
CString str;
std::string str2 = (const char*)str;
最好改一下char* p = new char[str.GetLength()];
应该不用足够长吧
可以用wcstombs 第一个参数为0则返回目标字符串的长度。
学习中
懂的东西太少了啊
其实本来是老师叫我编个大数乘法的
我用C++实现了
但老师又叫我用VC++MFC搞个界面
WideCharToMultiByte(CP_ACP,0,wo.GetBuffer(),-1,chr,wo.GetLength(),NULL,NULL);
typedef std::wstring stringT;
#else
typedef std::string stringT;
#endif
CString str = _T("123455");
stringT Temp = str.GetBuffer(0);
#include <string>
using namespace std;
CString strMfc="test";
string strStl;
strStl =strMfc.GetBuffer(0);
GetBuffer(int size)是用来返回一个你所指定大小可写内存的成员方法。它和被重载的操作符LPCTSTR还是有点本质区别的,LPCTSTR是直接返回一个只读内存的指针,而GetBuffer则是返回一个可以供调用者写入的内存,并且,你可以给定大小。下面是个简单的,但也是非常典型的例子: int readFile(CString& str, const CString& strPathName) { FILE* fp = fopen(strPathName, "r"); // 打开文件 fseek(fp, 0, SEEK_END); int nLen = ftell(fp); // 获得文件长度 fseek(fp, 0, SEEK_SET); // 重置读指针 char* psz = str.GetBuffer(nLen); fread(psz, sizeof(char), nLen, fp); //读文件内容 str.ReleaseBuffer(); //千万不能缺少 fclose(fp); } 上面的函数是GetBuffer函数最典型的用法了,其实它就相当于申请一块nLen大小的内存,只不过,这块内存是被引用在CString对象的内部而已,这是非常有效的一种用法,如果不直接用GetBuffer函数来申请的话,那么你必须用new操作符(或者malloc()函数)在CString的外部申请,然后再将申请的内存拷贝到CString对象中,显然这是一个非常冗余的操作,会使你函数的效率大大下降。 ReleaseBuffer函数是用来告诉CString对象,你的GetBuffer所引用的内存已经使用完毕,现在必须对它进行封口,否则CString将不会知道它现在所包含的字符串的长度,所以在使用完GetBuffer之后,必须立即调用ReleaseBuffer函数重置CString的内部属性,其实也就是头部信息。
CString s1(TEXT("中华人民共和国"));
wstring tmp(s1.GetBuffer());CString s2("中华人民共和国");
string temp(s2.GetBuffer());
期待你的加入。
一起讨论软件开发技术,项目交易经验。
char* pbuf = T2A(str);