size_t wchar_t

size_t在C语言中就有了。它是一种“整型”类型,里面保存的是一个整数,就像int, long那样。这种整数用来记录一个大小(size)。size_t的全称应该是size type,就是说“一种用来记录大小的数据类型”。通常我们用sizeof(XXX)操作,这个操作所得到的结果就是size_t类型。因为size_t类型的数据其实是保存了一个整数,所以它也可以做加减乘除,也可以转化为int并赋值给int类型的变量。类似的还有wchar_t,
ptrdiff_t。wchar_t就是wide char type,“一种用来记录一个宽字符的数据类型”。ptrdiff_t就是pointer difference type,“一种用来记录两个指针之间的距离的数据类型”。示例代码:int i; // 定义一个int类型的变量isize_t size = sizeof(i); // 用sizeof操作得到变量i的大小,这是一个size_t类型的值 // 可以用来对一个size_t类型的变量做初始化i = (int)size; // size_t类型的值可以转化为int类型的值char
c = 'a'; // c保存了字符a,占一个字节wchar_t wc = L'a'; // wc保存了宽字符a,占两个字节。注意'a'表示字符a,L'a'表示宽字符aint arr[] = {1, 2, 3, 4, 5}; // 定义一个数组int* p1 = &arr[0]; // 取得数组中元素的地址,赋值给指针int* p2 = &arr[3];ptrdiff_t diff = p2 - p1; // 指针的减法可以计算两个指针之间相隔的元素个数 // 所得结果是一个ptrdiff_t类型i = (int)diff;
// ptrdiff_t类型的值可以转化为int类型的值通常,size_t和ptrdiff_t都是用typedef来实现的。你可能在某个头文件里面找到类似的语句:typedef unsigned int size_t;typedef int ptrdiff_t;而wchar_t则稍有不同。在一些旧的编译器中,wchar_t也可能是用typedef来实现,但是新的标准中wchar_t已经是C/C++语言的关键字,wchar_t类型的地位已经和char, int的地位等同了

时间: 2024-12-14 07:45:59

size_t wchar_t的相关文章

Cppcheck 用法(上篇)

简述 Cppcheck 是一种 C/C++ 代码缺陷静态检查工具.不同于 C/C++ 编译器及很多其它分析工具,它不检查代码中的语法错误.Cppcheck 只检查编译器检查不出来的 bug 类型,其目的是检查代码中真正的错误(即:零误报). 简述 介绍 开始使用 第一个测试程序 检查文件夹中的所有文件 手动检查文件或使用项目文件 检查时排除某个文件或文件夹 严重性 启用消息 不确定消息 保存结果到文件中 多线程检查 平台 项目 CMake Visual Studio 预处理器设置 定义 XML

c c++-char* 转 wchar_t* 什么情况下一点错都不出

问题描述 char* 转 wchar_t* 什么情况下一点错都不出 char* 转 wchar_t* 我用的是这个方法 char* text = "abcdef"; int nu = strlen(text); int n =(size_t) MultiByteToWideChar( CP_ACP, 0, text,(int)nu, NULL, 0) + 2 ; wchar_t* pwstr = new wchar_t[n]; if (pwstr) { memset(pwstr, 0x

wchar_t,char,string,wstring之间的相互转换_C 语言

在处理中文时有时需要进行wchar_t,char,string,wstring之间的转换. 其中char和string之间.wchar_t和wstring之间的转换较为简单,代码在vs2010下测试通过. 复制代码 代码如下: #include <iostream>#include <string>#include <tchar.h>#include <Windows.h> using namespace std; //Converting a WChar 

c++-程序中是不是一般不用char类型而是用wchar_t类型呢

问题描述 程序中是不是一般不用char类型而是用wchar_t类型呢 char类型是不是在程序中用处不大,不能处理中文和其他非ASCII码,而且据说处理wchar_t的性能比char高,请教各位高手,是不是程序中一般都会选择用wchar_t,而不用char呢? 解决方案 这种做法的局限性是明显的,首先,我们必须要考虑识别这是一个汉字还是两个英文,特别是,一些>127的ASCII编码被用一些特殊字符,而很不幸,我们没法区分它是中文还是这些特殊字符. 所以你在一些汉化的DOS软件上经常看到显示出来的

windows-为什么exception没有宽字符版本?还有很多类库也没有,使用wchar_t不是超级麻烦吗?

问题描述 为什么exception没有宽字符版本?还有很多类库也没有,使用wchar_t不是超级麻烦吗? 最近因为字符集的问题,搞来搞去总是有一些字符变成?号,想采用wchar_t替换原来的char,但是发现麻烦非常多,最郁闷的是一些类库的参数要求采用char*,连最平常的exception也不支持wchar_t,望众高手指教啊,用宽字符需要这么麻烦吗??比如那个OTL4,虽然声称支持宽字符,但是其中对象的参数,如连接字符串,SQL都要求传人char字符串,只是查询结果可以输出Unicode编码

cstring-CString与wchar_t[]的赋值问题

问题描述 CString与wchar_t[]的赋值问题 敝人正在调试一个程序,现遇到一问题求大牛解答 我将一个wchar_t[50]的变量赋值给一个CString的变量 编译时能过,但程序运行到这个赋值语句时程序挂了 sFSURTData.strSamplingTime = SResultOfFSUNHT.wchSamplingTime 这两个变量都是属于结构体里的成员 解决方案 wchar_t 到 CString 的赋值,应该直接将 wchar_t 赋值给 CString 就可以. 但必须保证

win32-LPCTSTR 和 wchar_t* 为什么不兼容?

问题描述 LPCTSTR 和 wchar_t* 为什么不兼容? 我将LPCTSTR一直转向定义,看到是wchar_t呀? 两者到底层都是相同的,为什么VC不能相互转换? 解决方案 LPCTSTR是const char *,不是wide char *. 解决方案二: LPCTSTR里面有一个T,它是一个宏,取决于字符集 可以使char*,也可以是wchar_t* 转换可以强制类型转换,但是只能LPCTSTR->char*, 或者LPCTSTR->wchar_t* 解决方案三: 这个要看工程是多字

c++wchar_t** 映射C#里面的什么类型?

问题描述 小弟最近在用C#调用c++的类库,但wchar_t**这个字符串数组不知道怎么跟c#对应,希望给我大哥帮忙解答下,谢谢!c++方法KDBDataGetCurrentValue(wchar_t**tagNames) 解决方案 解决方案二:refstring[]试试解决方案三:嗯,我试下看解决方案四:相似疑问我在用C#调用C++编写的dll,某个函数的参数是LPCWSTR,我在C#里应该传进什么类型?解决方案五:这样使用:[DllImport("xxx.dll",CallingC

c++-CString类型(汉字)转换为wchar_t类型时显示的为乱码

问题描述 CString类型(汉字)转换为wchar_t类型时显示的为乱码 如题,从编辑框中提取汉字,取出为CString类型的,将此变量转换为wchar____t类型的变量,显示出来为乱码,但是当输入的为英文字母时,显示的就是正确的,不知道问题出现在哪里,求大神指点 ! 部分程序: 解决方案 最简单的将你的工程设置为Unicode编码的. 解决方案二: 如何从 wchar_t * 转换为其他字符串类型 解决方案三: _tsetlocale(LC_ALL, _T("chs")); //