|
C++語言之所以難學,就是因為字符串太多了! |
一派掌門 二十級 |
C++中字符串數據類型簡直多如牛毛!
比如char,char*,char[],wchar_t,wchar_t*,wchar_t[],string,wstring,String^,LPCSTR,LPCTSTR,LPCWCH,LPCWSTR,LPTSTR,TCHAR
我草居然15種!!!!!!!人家PHP,ASP,JavaScript包括ActionScript這些語言都只有一種字符串,C++居然有15種字符串。怪不得C++這麼難!
|
一派掌門 二十級 |
我到現在還不知道到底怎麼將char*轉換為char[]
|
|
一派掌門 二十級 |
還有CString,還有unsigned char!
|
|
一派掌門 二十級 |
Linux環境下的c語言還有他媽一大堆字符串
|
|
117.176.140.*
|
C系列的指針是個難點,但是會了就會覺得它還好用
|
|
一派掌門 二十級 |
char = CHAR 字符變量 char * = LPSTR 字符串指針 char[] = CHAR[] 字符數組 wchar_t = WCHAR 寬字符變量 wchar_t * = LPWSTR 寬字符指針 wchar_t[] = WCHAR[] 寬字符數組
string C++標準庫中的字符串類 wstring C++標準庫中的寬字符串類 String^ 這是微軟在CLR(C++.NET)中搞出來的字符串類(一般情況下根本用不到,也不用去學)
LPCSTR = const char * LPCTSTR = const char * 或 const wchar_t *(根據項目屬性的設置決定) LPCWCH = LPCWSTR = const wchar_t * LPTSTR = char * 或 wchar_t *(根據項目屬性的設置決定) TCHAR = char 或 wchar_t(根據項目屬性的設置決定)
另外還有COM組件對象模型中的BSTR字符串,一般要轉換為char或wchar_t後才對內容進行處理,不直接使用
unsigned char和char完全相同,使用時可以直接互相強制類型轉換
另外還有MySQL, libxml裏面的一些亂七八糟的字符串類型,基本上都要轉換為C/C++標準字符串類型後才能使用 QT還有QString,本人對此不是很了解
|
|
一派掌門 二十級 |
其實unsigned只是一個相對的概念,並不影響數據的存儲。 比如,一般情況下我們認為int不能存儲「22億」這個數,而unsigned int就可以。但實際上只要printf的佔位符一變,int就能「存儲」22億了: #include <stdio.h> int main(void) { int i = 2100000000; printf("i=%d\n", i); i += 100000000; printf("i=%d\n", i); printf("i=%u\n", i); }
|
|
一派掌門 二十級 |
|
|
一派掌門 二十級 |
-2和254這兩個數在內存中的存儲方式都是一樣的,只不過用了不同類型的變量去引用它,輸出的字符串不同而已。
|
|
一派掌門 二十級 |
用typedef定義出來的新字符串類型可以無視,但如果是新定義出來的字符串類的話,一般將其轉換為C++標準字符串類型使用。
BSTR不是C++的標準字符串類型,而是微軟搞出來的一種特殊的數據結構。
|
|
一派掌門 二十級 |
11樓
發表于: 2016-7-27 22:35
另外,int[]和int*雖然是同一類型的東西,但是兩者用法不完全一樣。
|
|
一派掌門 二十級 |
12樓
發表于: 2024-8-19 15:18
知乎上說的,每一個庫都有自己定義的string類型。
|
|