类型转化:
CString --> string
DBCS编码:
CString Cstr = "Hello World";
std::string str = "";
str = Cstr.GetBuffer(0);
UNICODE编码:
CStringW Wstr = _T("Hello World");
CStringA Astr(Wstr.GetBuffer(0));
Wstr.ReleaseBuffer();
str::string str = "";
str = Astr.GetBuffer(0);
Astr.ReleaseBuffer();
std::string --> CString
CString Cstr = "";
std::string str = "Hello World";
Cstr = str.c_str();
字符串(CString或string) --> int
_ttoi()在 ANSI 编码系统中被编译成_atoi(),而在 Unicode 编码系统中编译成_wtoi()
_tcstoul或_tcstol()可以把字符串转化成任意进制的(无符号/有符号)长整数。
CString Cstr = "10";
int x = _ttoi(Cstr);
CString --> char*
CString Cstr = "Hello World";
LPCTSTR(Cstr);
GetBuffer方法:
GetBuffer不传递参数时,参数默认为0.说明"给我字符串指针,我不改变字符串大小"
假设你想增加字符串的长度,就必须将你需要的字符空间大小(注意:是字符而不是字节)传给GetBuffer.
当调用 ReleaseBuffer 时,字符串的实际长度会被重新计算,然后存入 CString 对象中。
**强调一点**:
在 GetBuffer 和 ReleaseBuffer 之间这个范围,一定不能使用你要操作的这个缓冲的CString对象的任何方法。因为 ReleaseBuffer 被调用之前,该 CString 对象的完整性得不到保障。
LPCTSTR Lstr = Cstr.GetBuffer();
int x = Cstr.GetLength(); // 可能出错,切记!
Cstr.ReleaseBuffer();
int y = Cstr.GetLength(); // 保证正确
AfxExtractSubString方法:切割字符串
AfxExtractSubString(Cstr,"Hello-World-I-Love-You",3,'-');
AfxMessageBox(Cstr);//Cstr结果为Love
备忘:适用于Unicode环境,要养成使用_T()宏的习惯
此文是总结学习如下链接文章
类型转换 CString String int 相互转换
最新推荐文章于 2021-02-26 15:08:03 发布