作者共发了10篇帖子。 内容转换:不转换▼
 
点击 回复
725 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)
 

本帖信息

点击数:725 回复数:10
评论数: ?
作者:巨大八爪鱼
最后回复:巨大八爪鱼
最后回复时间:2016-7-27 22:35
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。