CString是MFC中经常使用到的字符串类,该类使用时不用关心内存的分配,而且还有多种初始化方式。
想在非MFC项目中使用CString,须引入头文件:
#include "cstringt.h" //MFC-only string objects
#include "atlstr.h" //Non-MFC string objects
CString 基础用法
-
直接将字符串赋值给CString对象
代码如下:
CString str1=“songxiwei”; -
通过构造函数初始化
代码如下:
CString str2(’ ',100);预分配100字节,填充空格 -
加载工程中字符串资源
代码如下:
CString str3;
sr3.LoadString(IDS_STR); -
使用CString类的成员函数Format初始化。
代码如下:
CString str4;
int i=10;
str.Format(“value:%d”,i);
CString与QString相互转换
使用方法:
inline QString CS2QS(CString cs) { return QString::fromWCharArray((LPCTSTR)cs, cs.GetLength()); }
inline CString QS2CS(QString qs) { return qs.toStdString().c_str(); }
#include <QtCore/QCoreApplication>
#include <qDebug>
#include <afx.h>
inline QString CS2QS(CString cs) { return QString::fromWCharArray((LPCTSTR)cs, cs.GetLength()); }
inline CString QS2CS(QString qs) { return qs.toStdString().c_str(); }
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
CString cs = "你好Hello World啊 !";
QString qs = "好啊hehe.........";
CString cs2 = QS2CS(qs);
qDebug() << CS2QS(cs);
qDebug() << CS2QS(cs2);
return a.exec();
}
【输出】
“你好Hello World啊 !”
“好啊hehe…”
CString与String相互转换
void CStringTostring(const CString& source, string& destination)
{
CString strSource(source);
int leng;
leng = 2 * strSource.GetLength() + 1;
char* ansiStr = new char[leng];
memset(ansiStr, 0, leng);
WideCharToMultiByte(0, NULL, strSource, -1, ansiStr, leng, NULL, NULL);//sizeof(ansiStr),
destination = ansiStr;
}
//使用:
CStringTostring(str, t_str); //其中,str为源CString,t_str为需要转换的目标string
CString与char相互转换
char* CString2char(CString& str)
{
int len = str.GetLength();
char* chRtn = (char*)malloc((len * 2 + 1) * sizeof(char));//CString的长度中汉字算一个长度
memset(chRtn, 0, 2 * len + 1);
BSTR bstrText = str.AllocSysString();
_bstr_t b = bstrText;
char* tempchar = b;
strcpy((LPSTR)chRtn, tempchar);
return chRtn;
}
//使用:
CString temp;
char* pchar = CString2char(temp);
参考链接:https://blog.csdn.net/piaopiaolanghua/article/details/8672807