用Qstring给char[]数组赋值(转)

tree_data.Desc  //Desc是char[80]类型的数据

Qstring newDescStr;

strcpy(tree_data.Desc ,

newDescStr.toLocal8Bit().data());

注意:

.toLocal8Bit()为了让Qstring变成QByteArray,也为了汉字本地化处理;.data()是将QByteArray转换为char*

有时候打印SQL语句时,.toLocal8Bit()和.data()不能连续写,要分两步进行;

另外写了一个函数,如果经常需要这样做,可以调用该函数

//将Str的内容填充到BUFF
int DbCfgFun::InputStrToBuff(char *buff, QString Str, int BuffLen)
{
if (!buff || BuffLen<=0 ||Str.length()<=0)
{
return -1;
}

memset(buff, 0, BuffLen);
int RealLen = (Str.toLocal8Bit().length()<BuffLen ? Str.toLocal8Bit().length() : BuffLen);
if (RealLen>0)
{
memcpy(buff, Str.toLocal8Bit().data(), RealLen);
}
buff[BuffLen-1] = 0;
return RealLen;
}

时间: 2024-07-29 21:49:42

用Qstring给char[]数组赋值(转)的相关文章

QString 和char数组转换

在qt开发过程中经常遇到QString类和char数组进行转换,在此记录一下: QString->char数组 QString str="12fff"; QByteArray ba=str.toLatin1(); char *c=ba.data(); char数组->QString char c[]="12ff"; QString str=QString(QLatin1String(c));

QString转换为char*

QString在Qt里相当于C++里的std::string,或者是C里的c style string.不过,QString跟编码相关,在低层想把一个QString发送出去相当麻烦,尤其对方用的不是Qt的时候,必须先转化为char数组. QString转换为char数组,基本就是先将QString转换为QByteArray,再从QByteArray取得char *指针,就可以得到char类型的数据了.需要注意的是QString的编码. 假如为UTF8编码,则QString str("中国人&qu

char数组

*****************************************************************char 类型的数组(c语言中是没有字符串的)char name[20]是数组还是字符串?char name[20]是 char 数组 赋值方式1:char name[20]="abcd_1234";(或者char name[]="abcd_1234";)(这样子赋值有\0的存在)char time[9] = {0, 0, 0, 1, 0

char数组和string的相互转换

1 //char数组和string的转换 2 #include<iostream> 3 #include<string.h> 4 using namespace std; 5 int main() 6 { 7 char ch[]="hello world"; 8 // string s=ch;/* string可以直接用char数组赋值*/ 9 string s(ch);/* 对string赋值char数组差不多就这两种*/ 10 cout<<&qu

C/C++ string和char数组对比

string是c++特有的,使用时需添加头文件#include<string> (一)#include<string.h>和#include<cstring>以及#include<string.h>区别 <string.h> <string.h>是C版本的头文件,包含比如strcpy.strcat之类的字符串处理函数. <cstring> 在C++标准化(1998年)过程中,为了兼容以前,标准化组织将所有这些文件都进行了新

给字符数组赋值的方法

main() { char s[30]; strcpy(s, "Good News!"); /*给数组赋字符串*/ . . . } 上面程序在编译时, 遇到char s[30]这条语句时, 编译程序会在内存的某处留 出连续30个字节的区域, 并将第一个字节的地址赋给s.当遇到strcpy( strcpy 为 Turbo C2.0的函数)时, 首先在目标文件的某处建立一个"Good News!/0" 的字符串. 当中/0表示字符串终止, 终止符是编译时自己主动加上的,

个人理解的int数组和char数组

char数组中不论是一维还是二维的,在程序执行时每一块的分离依据都是以提供的起始地址到'\0'为一个处理的字符串.所以关于char[]的函数都是只提供相应起始地址作为形参就可以. char[]互相交换内容时不是用的=号,而是使用strcpy(a,b),其中a为"被赋值的"char[]的起始地址,b为"要赋的值"的char[]的起始地址.要修改其中的某个字符则可以使用=号 另外例如char* a="abcd"和char b[5]="abc

delphi char数组、string和Pchar的相互转换

因为要调用windows的api或者给vc++写接口,很多地方都要用到pchar,现在将char数组.string和pchar之间的相互转换都列出来,都是网上找的资料,我总结一下,先直接上代码,再讲原理. 1.string转换成pchar 可以使用pchar进行强制类型转换,也可以使用StrPCopy函数 var s:string; p,p1:PChar; begin s:='Hello Delphi'; p:=PChar(s); ShowMessage(p); p1:=StrAlloc(Len

给结构体的字符数组赋值

char a[10] = "123"; /*正确,在定义的时候初始化*/char a[10];a = "123"; /*错误,不能用“=”直接为字符数组赋值*/strcpy(a, "123"); /*正确,使用strcpy函数复制字符串*/