C++類型轉換之char轉string

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型,就把這茬給忘了。
在這裏插入圖片描述
最後真的是沒辦法了,抱着試試看的心態,用了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.結語

碼代碼呢,就是這樣,有時候被一個小問題折磨的頭疼。第一次遇到問題,也許會多走彎路,但是在解決問題的過程中,也會學到不少東西,這大概也正是編程的魅力所在。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章