目前共有12篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:港澳繁體▼
 
點擊 回復
1327 11
C++語言之所以難學,就是因為字符串太多了!
一派掌門 二十級
1樓 發表于:2012-7-24 16:33

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++這麼難!

一派掌門 二十級
2樓 發表于:2012-7-24 16:33
我到現在還不知道到底怎麼將char*轉換為char[]
 
一派掌門 二十級
3樓 發表于:2012-7-30 12:15
還有CString,還有unsigned char!
 
一派掌門 二十級
4樓 發表于:2014-11-16 01:08
Linux環境下的c語言還有他媽一大堆字符串
 
117.176.140.*
5樓 發表于:2014-11-26 13:06
C系列的指針是個難點,但是會了就會覺得它還好用
 
一派掌門 二十級
6樓 發表于:2016-5-24 20:46
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,本人對此不是很了解
 
一派掌門 二十級
7樓 發表于:2016-6-20 22:27
其實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);
}

 
一派掌門 二十級
8樓 發表于:2016-6-20 22:30
 
一派掌門 二十級
9樓 發表于:2016-6-20 22:32
-2和254這兩個數在內存中的存儲方式都是一樣的,只不過用了不同類型的變量去引用它,輸出的字符串不同而已。
 
一派掌門 二十級
10樓 發表于:2016-6-20 22:34
用typedef定義出來的新字符串類型可以無視,但如果是新定義出來的字符串類的話,一般將其轉換為C++標準字符串類型使用。

BSTR不是C++的標準字符串類型,而是微軟搞出來的一種特殊的數據結構。
 
一派掌門 二十級
11樓 發表于:2016-7-27 22:35
另外,int[]和int*雖然是同一類型的東西,但是兩者用法不完全一樣。
 
一派掌門 二十級
12樓 發表于:2024-8-19 15:18
知乎上說的,每一個庫都有自己定義的string類型。
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:1327 回複數:11
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2024-8-19 15:18
 
©2010-2025 Purasbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。