作者共發了10篇帖子。 內容轉換:不轉換▼
 
點擊 回復
871 10
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语言还有他妈一大堆字符串
一派護法 十九級
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*虽然是同一类型的东西,但是两者用法不完全一样。

回復帖子

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

本帖信息

點擊數:871 回複數:10
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2016-7-27 22:35
 
©2010-2024 Arslanbar Ver2.0
除非另有聲明,本站採用共享創意姓名標示-相同方式分享 3.0 Unported許可協議進行許可。