char [ ] 的长度

char [ ] 的长度,第1张

char类型的是占两个字节;

一个字节是8位(bit),所以也可以表示为16bit。

可以通过以下方式定义一个char类型:

char

c

=

'a';

实际占一个字节。

char

d

=

'高';实际占两个字节。

扩展:计算一个字符串的字节长度

如:”我是gdb“占的字节数就是2+2+1+1+1

=7个字节。

C++中获得字符数组的长度可以使用strlen函数,如计算字符数组a的长度的语句是i=strlen(a)。

函数原型:extern unsigned int strlen(char s);

头文件:#include <stringh>;

功能:计算给定字符串的(unsigned int型)长度,不包括'\0'在内;

参数说明:要计算长度的字符串数组的首地址;

返回值说明:要计算字符串的长度,不包括'\0'。

unsigned

char

是无符号字符变量,不是字符串,长度为一字节。

strlen的参数必须是字符串,即以'\0'结尾的字符数组。

对于unsigned

char

c[100]来说,要想用strlen(c)求出c的长度,就必须在数组末尾加'\0'字符。可以直接读写指定数组元素,如c[50]='\0',也可以在定义时初始化成字符串,如

unsigned

char

c[100]="hello,world!";

编译器会自动在感叹号后面一个数组元素写入'\0'。

char转换

Qt下面,字符串都用QString,确实给开发者提供了方便,想想VC里面定义的各种变量类型,而且函数参数类型五花八门,经常需要今年新那个类型转换

Qt再使用第三方开源库时,由于库的类型基本上都是标准的类型,字符串遇的多的就是Char类型

在Qt下怎样将QString转char呢,需要用到QByteArray类,QByteArray类的说明详见Qt帮助文档。

因为char最后都有一个‘/0’作为结束符,而采用QString::toLatin1()时会在字符串后面加上‘/0’

方法如下:

Qstring str;

char ch;

QByteArray ba = strtoLatin1();

ch=badata();

这样就完成了QString向char的转化。经测试程序运行时不会出现bug

注意第三行,一定要加上,不可以strtoLatin1()data()这样一部完成,可能会出错。

补充:以上方法当QString里不含中文时,没有问题,但是QString内含有中文时,转换为char就是乱码,采用如下方法解决:

方法1:

添加GBK编码支持:

#include

QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));

然后改变上面的第三行为:QByteArray ba = strtoLoacl8Bit(); toLoacl8Bit支持中文

方法2:

先将QString转为标准库中的string类型,然后将string转为char,如下:

std::string str = filenametoStdString();

const char ch = strc_str();

在头文件位置写

#include<stringh>

然后在后面用b=strlen(a);

b是一个int型的变量 a是字符串或者字符数组得首地址,也就是名字比如a[20],

以上就是关于char [ ] 的长度全部的内容,包括:char [ ] 的长度、c++ 如何获得字符数组长度、如何获取一个unsigned char*类型的字符串长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9385491.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存