一種方法:
cstring str=_t("這是我的測試程式。");
// 先得到要轉換為字元的長度
const size_t strsize=(str.getlength()+1)*2; // 寬字元的長度;
char * pstr= new char[strsize]; //分配空間;
size_t sz=0;
wcstombs_s(&sz,pstr,strsize,str,_truncate);
int n=atoi(const char*)pstr); // 字串已經由原來的cstring 轉換成了 const char*
//沒有這番轉換會報錯,無法將lpctstr或cstring 轉換為const char*
另一種:
const char * a;
cstring b;
//a=b;//不存在從csring到const char *的適當轉換函式
a=(const char *)b.getbuffer();
cstring m_strsql;
cstring m_strseek;//一編輯框關聯的成員變數
//m_strsql.format("book_name'%s'",m_strseek);//報錯,不能將引數 1 從「const char [14]」轉換為「const wchar_t *」
解決方法:
修改為:m_strsql.format(l"book_name'%s'",m_strseek);或
m_strsql.format(_t("book_name\'%s\'"),m_strseek);
char 占用乙個位元組 , wchar_t占用兩個位元組。所以要轉換一下。
不管是不是用unicode,都使用_t("")巨集比較好,因為_t("")會自己轉換
const char * 到cstring可以進行直接轉換。
const char * a;
cstring b;
b=a;//通過
string str=「hello中文」;
cstring cstr=str.c_str();
string a;
char* b;
也可以直接賦值
string s;
char *p = "adghrtyh";
s = p;
cout << s << endl;同上
有2個函式可以運用。
乙個是.c_str(),乙個是data成員函式。
string s1 = "abcdeg";
const char *k = s1.c_str();
const char *t = s1.data();
printf("%s%s",k,t);
cout<
用string的乙個成員函式copy實現
string s1 = "abcdefg";
char *data;
int len = s1.length();
data = (char *)malloc((len + 1)*sizeof(char));
s1.copy(data, len, 0);
data[len] = '\0';
printf("%s", data);
cout << data;
這個由於我們知道string的長度,可以根據length()函式得到,又可以根據下標直接訪問,所以用乙個迴圈就可以賦值了。
這樣的轉換不可直接賦值。
string pp = "dagah";
char p[8];
int i;
for( i=0;i
各種型別的轉換
int i 100 long l 2001 float f 300.2 double d 12345.119 char username csdn char temp 200 char buf cstring str variant t v1 bstr t v2 一 其它資料型別轉換為字串 二 字串...
python各種型別轉換
int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eval str 用來計算在字串中的有效py...
python各種型別轉換
python int x base 將x轉換為乙個整數 long x base 將x轉換為乙個長整數 float x 將x轉換到乙個浮點數 complex real imag 建立乙個複數 str x 將物件 x 轉換為字串 repr x 將物件 x 轉換為表示式字串 eval str 用來計算在字...