CString,int,string,char*之间的转换

简介:
《C++标准函数库》中说的  
有三个函数可以将字符串的内容转换为字符数组和C—string  
1.data(),返回没有”\0“的字符串数组  
2,c_str(),返回有”\0“的字符串数组  
3,copy() 
................................................................. 
int 转 CString: 
CString.Format("%d",int); 
............................... 
string 转 CString  
CString.format("%s", string.c_str());  
用c_str()确实比data()要好.  
....................................... 
char* 转 CString  
CString.format("%s", char*);  
CString strtest;  
char * charpoint;  
charpoint="give string a value";  
strtest=charpoint; //直接付值 
................................................................... 
CString 转 int 
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); 
.............................. 
string 转 int 
.............................. 
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); 
................................................................... 
CString 转 string 
  string s(CString.GetBuffer());  
  GetBuffer()后一定要ReleaseBuffer(),否则就没有释放缓冲区所占的空间.  
.......................................... 
int 转 string 
.......................................... 
char* 转 string  
string s(char *);  
你的只能初始化,在不是初始化的地方最好还是用assign(). 
................................................................... 
CString 转 char * 
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; 
.......................................... 
int 转 char * 
在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(); 

.......................................... 
string 转 char *  
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 * 

String,CString,TCHAR,char之间区别和联系

2008-07-25 19:53

char是类型
TCHAR也是!不过他可以通过是否定义了UNICODE宏来判断到底是
char还是w_char;

TCHAR是一种字符串类型,它让你在以MBCS和UNNICODE来build程序时可以使用同样的代码,不需要使用繁琐的宏定义来包含你的代码,而char代表ASCII的字符

#ifdef UNICODE

   typedef wchar_t TCHAR;

   #else

   typedef char TCHAR;

   #endif

所以用MBCS来build时,TCHAR是char,使用UNICODE时,TCHAR是wchar_t.


至于String,CString他们都是一种封装了字串处理的操作!
你可以打开他们的源代码找寻究竟!


CString
属于VC的类库

string是标准C++的类库

string.h是C的库函数。

研究它们的源代好些!

TCHAR,char是可以同整型互换的类型。
String,CString代表了一块内存区域。

TCHAR 赋值

#include <tchar.h>

TCHAR szWindowText[256]=_T("QQ2006");

char*、TCHAR*转换CString 
CString str(****) 
下面详细写一下其它转换 
////////////////////////////// 
/* 
*********************************************************************** 
* 函数: TransCStringToTCHAR 
* 描述:将CString 转换为 TCHAR* 
* 日期:
*********************************************************************** 
*/ 
TCHAR* CPublic::CString2TCHAR(CString &str) 

int iLen = str.GetLength(); 
TCHAR* szRs = new TCHAR[iLen]; 
lstrcpy(szRs, str.GetBuffer(iLen)); 
str.ReleaseBuffer(); 
return szRs; 


/* 
*********************************************************************** 
* 函数: THCAR2Char 
* 描述:将TCHAR* 转换为 char* 
* 日期:

*********************************************************************** 
*/ 
char* CPublic::THCAR2char(TCHAR* tchStr) 

int iLen = 2*wcslen(tchStr);//CString,TCHAR
汉字算一个字符,因此不用普通计算长度 
char* chRtn = new char[iLen+1] 
wcstombs(chRtn,tchStr,iLen+1);//转换成功返回为非负值 
return chRtn; 


/* 
*********************************************************************** 
* 函数: CString2char 
* 描述:将CString转换为 char* 
* 日期:
*********************************************************************** 
*/ 
char* CPublic::CString2char(CString &str) 

int len = str.GetLength(); 
char* chRtn = (char*)malloc((len*2+1)*sizeof(char));//CString的长度中汉字算一个长度 
memset(chRtn, 0, 2*len+1); 
USES_CONVERSION; 
strcpy((LPSTR)chRtn,OLE2A(str.LockBuffer())); 
return chRtn; 

//参考 
/////////////////////// 
//Pocket PC上的UNICODE和ANSI字符串 

//By Vassili Philippov, September 26, 2001. 

//杨方思歧 译 
//////////////////////// 
/* 
*********************************************************************** 
* 函 数 名:GetAnsiString 
* 描 述:将CString(unicode)转换为char*(ANSI) 
* 参 数:CString &s 要转换的CString 
* 返 回 值:返回转换结果 
* 创建日期:

最后修改:
*********************************************************************** 
*/ 
char* GetAnsiString(const CString &s) 

int nSize = 2*s.GetLength(); 
char *pAnsiString = new char[nSize+1]; 
wcstombs(pAnsiString, s, nSize+1); 
return pAnsiString; 




    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/greatverve/archive/2010/11/10/cstring-int-string-char.html,如需转载请自行联系原作者



相关文章
|
5月前
|
Java UED
Java中String强转int:一种常见的错误和解决方法
在Java中将非数字字符串转换为整数会导致`NumberFormatException`。要解决这个问题,可以使用`try-catch`捕获异常,正则表达式验证数字格式,或利用异常信息提供错误提示。例如,`Integer.parseInt()`会因遇到非数字字符如`&quot;123abc&quot;`而抛出异常,但通过异常处理或正则`\\d+`可确保安全转换。记得在编程时避免直接强转,以防止程序异常中断。
|
1月前
|
存储 C语言
使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小
【10月更文挑战第13天】使用 sizeof 操作符计算int, float, double 和 char四种变量字节大小。
77 1
|
3月前
|
Dart
Dart基础:进制转换、int与string互转
Dart基础:进制转换、int与string互转
122 3
遍历字符串,String line = xxx for(int i = 0;i<line.length();i++){system.out.println(line.chartAt(i)); 单个
遍历字符串,String line = xxx for(int i = 0;i<line.length();i++){system.out.println(line.chartAt(i)); 单个
|
6月前
|
存储 C语言
计算 int, float, double 和 char 字节大小
计算 int, float, double 和 char 字节大小。
79 3
|
5月前
|
Java
String转化为Int
String转化为Int
|
6月前
channelSftp.put(InputStream src, String dst, int mode);里的mode都是什么类型的
【5月更文挑战第15天】channelSftp.put(InputStream src, String dst, int mode);里的mode都是什么类型的
98 2
|
6月前
int 和 String 互相转换的多种方法
int 和 String 互相转换的多种方法
41 1
|
6月前
|
存储 Web App开发 编译器
C语言程序设计——int,double,char的用法
C语言程序设计——int,double,char的用法