C++类型转换之char转string

目录

        • 1.遇到的问题
        • 2.意外的惊喜
        • 3.结语

1.遇到的问题

最近项目在做去Qt化,没办法,Qt确实好用,但是要安装qt库,为了和各个现场的环境一致,只能用原汁原味的C了。
QT拼接字符串:

QString qstrDevPoint = QString("{TYPE:%1CONTENT:%2,COMPRESS,").arg(COM_FUNC_MSG_8).arg(g_pFeAcess->m_facName.c_str());
qstrDevPoint += QString("%1,%2,%3;").arg(info.offset).arg(info.var.un.uch).arg(info.var.time1.tv_sec);

这里面有个参数info.var.un.uch是char类型,刚开始用C++的string拼接的时候,找了好半天不知道char怎么转string。就直接拼在后面了,

string qstrDevPoint = "{TYPE:";
qstrDevPoint += to_string(COM_FUNC_MSG_8);
qstrDevPoint += "CONTENT:";
qstrDevPoint += g_pFeAcess->m_facName;
qstrDevPoint += ",COMPRESS,";
.....
qstrDevPoint += info.var.un.uch;//char

结果是令我出乎意料的"\000",正常输出应该为"0"。找了好多资料,用过网上说的stringstream,无用;其他还有更麻烦的方法,就不说了,没有一个成功的。

2.意外的惊喜

前不久刚接触的字符串处理函数,里面有个to_string(),我一看,参数里面没有char型啊,当时也是被网上的说法给带偏了,脑子乱了,一直在用to_string,但是刚碰到char型,就把这茬给忘了。
C++类型转换之char转string_第1张图片
最后真的是没办法了,抱着试试看的心态,用了to_string

qstrDevPoint += to_string(info.offset);//int
qstrDevPoint += ",";
qstrDevPoint += to_string(info.var.un.uch);//char -> string
qstrDevPoint += ",";
qstrDevPoint += to_string(info.var.time1.tv_sec);
qstrDevPoint += ";";

赶紧一试,看到结果是0时,真的是哭笑不得。虽然to_string没有参数为char的,但是char可以转为int,所以对char类型,也可以使用to_string方法转为string

3.结语

码代码呢,就是这样,有时候被一个小问题折磨的头疼。第一次遇到问题,也许会多走弯路,但是在解决问题的过程中,也会学到不少东西,这大概也正是编程的魅力所在。

你可能感兴趣的:(C/C++,字符串,c++)