C++学习——CString,char * ,string的相互转换

简介: C++学习——CString,char * ,string的相互转换

CString头文件#include <afx.h>


string头文件#include <string.h>


1、CString转char *


CString cstr;


char *p =(LPSTR)(LPCTSTR)cstr;


2、string转 CString


CString.format(”%s”, string.c_str());


用c_str()确实比data()要好.


3、char转 CString


CString.format(”%s”, char*);


4、char转 string


string s(char *);


只能初始化,在不是初始化的地方最好还是用assign().


5、string转 char *


char *p = string.c_str();


6、CString转 string


string s(CString.GetBuffer());


GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间。


《C++标准函数库》中说的


有三个函数可以将字符串的内容转换为字符数组和C―string


1、data(),返回没有”/0“的字符串数组


2、c_str(),返回有”/0“的字符串数组


3、copy()


CString与int、char*、char[100]之间的转换


1、CString互转int


(1)将字符转换为整数,可以使用atoi、_atoi64或atol。


(2)将数字转换为CString变量,可以使用CString的Format函数。如


CString s;


int i = 64;


s.Format(”%d”, i)


Format函数的功能很强,值得你研究一下。


voidCStrDlg::OnButton1()
{
   // TODO: Add your control notificationhandler code here
   CString
   ss=”1212.12″;
   int temp=atoi(ss);
   CString aa;
   aa.Format(”%d”,temp);
   AfxMessageBox(”var is ” + aa);
}
sart.Format(”%s”,buf);


2、CString互转char*


CString strtest;
char * charpoint;
///char * TO cstring
charpoint=”give string a value”;
strtest=charpoint;
///cstring TO char *
charpoint=strtest.GetBuffer(strtest.GetLength());


标准C里没有string,char*==char []==string


可以用CString.Format(”%s”,char *)这个方法来将char 转成CString。要把CString转成char,用操作符(LPCSTR)CString就可以了。


3、CString转换 char[100]


///char[100] TOcstring
char a[100];
CString str(”aaaaaa”);
///cstring TO char[100]
strncpy(a,(LPCTSTR)str,sizeof(a));


相关文章
|
5月前
|
Go
Go - 学习 grpc.Dial(target string, opts …DialOption) 的写法
Go - 学习 grpc.Dial(target string, opts …DialOption) 的写法
67 12
|
6月前
|
C++
C++ string中的函数和常用用法
C++ 中string中的函数和常用用法
63 4
|
7月前
|
安全 算法 C语言
【C++进阶】深入STL之string:掌握高效字符串处理的关键
【C++进阶】深入STL之string:掌握高效字符串处理的关键
73 1
【C++进阶】深入STL之string:掌握高效字符串处理的关键
|
7月前
|
安全 C++
C++一分钟之-字符串处理:std::string
【6月更文挑战第25天】`std::string`是C++文本处理的核心,存在于`&lt;string&gt;`库中。它支持初始化、访问、连接、查找、替换等操作。常见问题包括空指针解引用、越界访问和不当内存管理。要安全使用,确保字符串初始化,用`at()`检查边界,用`.empty()`检查空字符串,且无需手动释放内存。高效技巧包括预先分配内存、利用互转函数以及使用迭代器。记得正确比较和遍历字符串以保证代码效率和安全性。
83 5
|
7月前
|
C++ 容器
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
C++字符串string容器(构造、赋值、拼接、查找、替换、比较、存取、插入、删除、子串)
|
7月前
|
C语言 C++
C++对C的改进和拓展\string类型
C++对C的改进和拓展\string类型
39 1
|
7月前
|
编译器 C++
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
47 1
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
new String()定义字符串为空,char[] chs = {‘a‘,‘b‘,‘c‘} String s2 = new String(chs) 输出abc,byte定99为a
|
6月前
|
C++
C++】string类的使用③(修改器Modifiers)
这篇博客探讨了C++ STL中`string`类的修改器和非成员函数重载。文章介绍了`operator+=`用于在字符串末尾追加内容,并展示了不同重载形式。`append`函数提供了更多追加选项,包括子串、字符数组、单个字符等。`push_back`和`pop_back`分别用于在末尾添加和移除一个字符。`assign`用于替换字符串内容,而`insert`允许在任意位置插入字符串或字符。最后,`erase`函数用于删除字符串中的部分内容。每个函数都配以代码示例和说明。
|
6月前
|
C++ 索引 容器