运维开发网

string,CString,char*之间的转化

运维开发网 https://www.qedev.com 2020-02-05 22:05 出处:网络 作者: 网络整理
下面是MFC/C++/C中字符类型CString, int, string, char*之间的转换的说明与举例,经常用的东西,相信对于用C/C++的朋友,还是比较有用的

string,CString,char*之间的转化

[b]int 转 CString:

[/b]CString.Format("%d",int);

...............................

[b]string 转 CString

[/b]CString.format("%s", string.c_str());

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

.......................................

[b]char* 转 CString

[/b]CString.format("%s", char*); 

 CString strtest;

 char * charpoint;

 charpoint="give string a value";

 strtest=charpoint; //直接付值

...................................................................

[b]CString 转 int

[/b] CString  ss="1212.12";

 int temp=atoi(ss); //atoi _atoi64或atol

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

int int_chage = atoi((lpcstr)ss) ;

或:

   CString str = "23";

   UINT uint;

   sscanf(str, "%d", uint);

..............................

[b]string 转 int

[/b]..............................

char* 转 int

 #include <stdlib.h>

 int atoi(const char *nptr);

 long atol(const char *nptr);

 long long atoll(const char *nptr);

 long long atoq(const char *nptr);

...................................................................

[b]CString 转 string

[/b]  string s(CString.GetBuffer());

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

..........................................

[b]int 转 string

[/b]..........................................

[b]char* 转 string

[/b] string s(char *);

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

...................................................................

[b]CString 转 char *

[/b]复制代码 代码如下:

 CString strtest="wwwwttttttt";

 charpoint=strtest.GetBuffer(strtest.GetLength());

CString转换 char[100]

 char a[100];

 CString str("aaaaaa");

 strncpy(a,(LPCTSTR)str,sizeof(a));

  CString  str="aaa"; 

  char*  ch; 

  ch=(char*)(LPCTSTR)str;

 

..........................................

[b]int 转 char *

[/b] 在stdlib.h中有个函数itoa()

 itoa的用法:

 itoa(i,num,10);

 i 需要转换成字符的数字

 num 转换后保存字符的变量

 10 转换数字的基数(进制)10就是说按照10进制转换数字。还可以是2,8,16等等你喜欢的进制类型

 原形:char *itoa(int value, char* string, int radix);

 实例:

 复制代码 代码如下:

 #include "stdlib.h"

 #include "stdio.h"

 main()

 {

 int i=1234;

 char s[5];

 itoa(i,s,10);

 printf("%s",s);

 getchar();

}

..........................................

[b]string 转 char *

[/b]复制代码 代码如下:

char *p = string.c_str();

 string aa("aaa");

 char *c=aa.c_str();

 string mngName;

 char t[200];

 memset(t,0,200);

 strcpy(t,mngName.c_str());

 

...................................................................

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

可以用CString.Format("%s",char *)这个方法来将char *转成CString。要把CString转成char *,用操

作符(LPCSTR)CString就可以了。

cannot convert from 'const char *' to 'char *'

const char *c=aa.c_str();

string.c_str()只能转换成const char *

CString 头文件#include <afx.h>

string 头文件#include <string.h>

CString 转char *

CString cstr;

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

string 转 CString

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

char 转 CString

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

char 转 string

string s(char *);

string 转 char *

char *p = string.c_str();

CString 转 string

string s(CString.GetBuffer());

1,string -> CString

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

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

2,char -> string

string s(char *);

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

3,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]之间的转换- -

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

CString互转int

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

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

CString s;

int i = 64;

s.Format("%d", i)

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

void CStrDlg::OnButton1()

{

// TODO: Add your control notification handler code here

CString

ss="1212.12″;

int temp=atoi(ss);

CString aa;

aa.Format("%d",temp);

AfxMessageBox("var is " + aa);

}

sart.Format("%s",buf);

CString互转char*

///char * TO cstring

CString strtest;

char * charpoint;

charpoint="give string a value";

strtest=charpoint;

///cstring TO char *

CString 转char *

CString cstr;

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

string 转 CString

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

char 转 CString

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

char 转 string

string s(char *);

string 转 char *

char *p = string.c_str();

CString 转 string

string s(CString.GetBuffer());

1,string -> CString

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

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

2,char -> string

string s(char *);

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

3,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]之间的转换- -

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

CString互转int

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

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

CString s;

int i = 64;

s.Format("%d", i)

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

void CStrDlg::OnButton1()

{

// TODO: Add your control notification handler code here

CString

ss="1212.12″;

int temp=atoi(ss);

CString aa;

aa.Format("%d",temp);

AfxMessageBox("var is " + aa);

}

sart.Format("%s",buf);

CString互转char*

///char * TO cstring

CString strtest;

char * charpoint;

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就可以了。

CString转换 char[100]

char a[100];

CString str("aaaaaa");

strncpy(a,(LPCTSTR)str,sizeof(a));

charpoint=strtest.GetBuffer(strtest.GetLength());

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

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

CString转换 char[100]

char a[100];

CString str("aaaaaa");

strncpy(a,(LPCTSTR)str,sizeof(a));

0

精彩评论

暂无评论...
验证码 换一张
取 消