|
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类型。
|
|