天天看点

ObjextARX-VS2005-字符串转换

1.使用string必须添加头文件

#include"string"

using namespace std;

2.使用cstring必须添加头文件(在非mfc工程中)

#include"afx.h"

注意:当出现#error : building mfc application with /md[d] (crt

dll version) requires mfc shared dll version. please #define

_afxdll or do not use /md[d]错误时,改工程设置:

project|properties|configuration properties|general|use of mfc :

use mfc in a shared dll(项目-〉属性-〉use of mfc 改成use mfc in a

share dll)

3.wchar_t

wchar_t是c++的字符数据类型,char是8位字符类型,最多只能包含256种

字符,许多外文字符集所含的字符数目超过256个,字符型无法表示

wchar_t数据类型为16位,所能表示的字符数远超char型。

4.achar类型(此类型是autodesk公司在adachar.h 头文件中定义的-

typedef wchar_t achar;)

#include "adachar.h"

5.uses_conversion在atlconv.h头文件中定义

#include "atlconv.h "

6.string->achar*

string str="string";

achar* ach;

uses_conversion;

ach=(achar*)a2ct(str.c_str());

7.achar*->string

string temp=w2a(ach);

8.(wchar_t)achar*->char*

char * ch;

ch=t2a(ach);

9.char*->achar*

achar* ach1;

方法一:

ach1=a2w(ch);

方法二:

size_t convertedchars=0;//记录返回实际转换字符串的长度

mbstowcs_s(&convertedchars,ach1,10,ch,_truncate);//10为ch的最大长

度,随着需要而改变

10.int->string

string str;

int nnumber=10001;

char ct[10];//把int转化为string

_itoa_s(nnumber,ct,10);

str=ct;或string str(ct);

11.string->int

12.cstring->char*

方法一:

char* ch;

cstring temp;

ch=t2a(temp.getbuffer(0));

方法二:

使用强制转换

cstring thestring( "this is a test" );

lptstr lpsz =(lptstr)(lpctstr)thestring;

13.char*->cstring

可以直接赋值

cstring cstr;

cstr=ch;

通过使用format函数

char charray[] = "this is a test";

mbcs下(即没定义unicode时):

cstr.format(_t("%s"), charray);

定义unicode时:

cstr.format(_t("%s"), a2w(charray));

14.char*->int

int n=atoi(ch);

15.int->char*

int n=45;

char nch[10];

itoa(n,nch,16);//16为进制,可以取2,8,10,16等

也可以采用如下形式:ch=itoa(n,nch,16);

vs2005环境用:_itoa_s(n,nch,2);

16.cstring->string

str=t2a(temp.getbuffer(0));

17.string->cstring

cstr=str.c_str();

18.char*->string

直接构造法:

char ct1[20];

string ste(ct1);//重新构造一个字符串

19.string->char*

string ste;

ch=(char*)ste.c_str();通过char*转换去掉const属性,注意ch只能为

char*,不能为char[]

20.float(double)->string

_gcvt_s(ct1,20,110.58485678,6);//6为精确度

string ste(ct1);

21.string->double

string num="15.12054";

double d=atof(num.c_str());

继续阅读