天天看點

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());

繼續閱讀