C++中不同類型字符串之間的互相轉換
C++中字符串的類型有,char [],char*,以及類的:String ,MFC中的Cstring,QT中的Qstring 以及字符串和整數之間的轉換,他們之間的轉換方法或者函數如下
1. 字符串的輸入:
string str;
getline(cin,str); //可輸入空格,遇到換行符結束
char* str;
gets(str) ; //可輸入空格,遇到換行符結束
scanf("%s",str); //遇到空格結束
cin>>str // 遇到空格 結束
char c=getchar() ; //獲取一個字符
2. 字符串間的轉化
1 string to CString
CString.format("%s",string.c_str());
2 CString to string
stringstr(CString.GetBuffer(str.GetLength()));
3 string to char *
char *p=string.c_str();
4 char * to string
string str(char*);
5 CString to char *
strcpy(char,CString,sizeof(char));
基於UNICODE的工程是不行的,CString會以UNICODE的形式來保存數據,強制類型轉換隻會返回第一個字符
6 char * to CString
CString.format("%s",char*);
7. Qstring 和 string:
QString qstr;
string str;
str = qstr.toStdString();
qstr = QString::fromStdString(str);
8. C庫函數
strcpy(str1,str2);
strncpy(str1,str2,n);
string str,a,b;
a=str.substr(index,size);
9. string , wstring ,LPCSTR, LPCTSTR, LPCWSTR 的轉換
Unicode下,LPCTSTR = LPCWSTR , 非Unicode下,LPCTSTR = LPCSTR;
而 std::string str = "test" ;
LPCSTR = str.c_str(); 就可以了
如果 是char*, CString :
char* psz = “abc”;
CString cstr( psz );
string str( cstr );
LPCTSTR lpstr = cstr ;
而 wstring wstr = "adc";
LPSWSTR lwstr = wtsr.c_str();
3. 字符串和整數的轉換
string i2c(int i)
{
intb;
charc;
stringstr;
while(i != 0)
{
b= i % 10;
c= b + '0';
str= c + str;
i= i / 10;
}
returnstr;
}
int c_i(string & str)
{
intsum = 0;
for(unsigned int i = 0;i<str.length();++i)
sum= sum * 10 + str[i] - '0';
returnsum;
}
int num = 100;
char str[25];
itoa(num, str, 10); //整數轉化爲字符串
char a[]=”-100”;
int c;
c=atoi(a);//字符串轉化爲整數
char str[255];
sprintf(str, "%x", 100); //將100轉爲16進製表示的字符串。