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*类型的字符串长度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)