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进制表示的字符串。