如何獲取unsigned char型別的字串長度

時間 2021-09-02 02:39:47

1樓:匿名使用者

char*轉換

qt下面,字串都用qstring,確實給開發者提供了方便,想想vc裡面定義的各種變數型別,而且函式引數型別五花八門,經常需要今年新那個型別轉換

qt再使用第三方開源庫時,由於庫的型別基本上都是標準的型別,字串遇的多的就是char*型別

在qt下怎樣將qstring轉char*呢,需要用到qbytearray類,qbytearray類的說明詳見qt幫助文件。

因為char*最後都有乙個『/0』作為結束符,而採用qstring::tolatin1()時會在字串後面加上『/0』

方法如下:

qstring str;

char* ch;

qbytearray ba = str.tolatin1();

ch=ba.data();

這樣就完成了qstring向char*的轉化。經測試程式執行時不會出現bug

注意第三行,一定要加上,不可以str.tolatin1().data()這樣一部完成,可能會出錯。

補充:以上方法當qstring裡不含中文時,沒有問題,但是qstring內含有中文時,轉換為char*就是亂碼,採用如下方法解決:

方法1:

新增gbk編碼支援:

#include

qtextcodec::setcodecfortr(qtextcodec::codecforname("gbk"));

qtextcodec::setcodecforlocale(qtextcodec::codecforname("gbk"));

然後改變上面的第三行為:qbytearray ba = str.toloacl8bit(); toloacl8bit支援中文

方法2:

先將qstring轉為標準庫中的string型別,然後將string轉為char*,如下:

std::string str = filename.tostdstring();

const char* ch = str.c_str();

2樓:馮老師(必果學院

有兩種方式:

1 使用資料型別強制轉換,示例帶如下:

unsigned char s[100] = "abcdef";

int len = strlen((char*)s);

2 另外一種方式就是自己實現該方法,進行統計。

對於c/c++中的字串,必須是以'\0'結尾的,因此可以如下做int getlen(const unsigned char s)return nlen;}

js如何獲取值,JS如何獲取值

獲取jsfunction返回的值 1 首先,使用初始化 建立乙個新的html5檔案,如下所示。2 建立乙個新的h1標籤,以接收js中函式函式的返回值。3 建立新的指令碼標記並在標記中建立新函式。該函式返回值22。4 還在h1標記中建立了乙個新的指令碼標記,標記中的新str變數接收上述函式aa的返回值...

如何獲取android唯一標識,如何獲取Android唯一標識

核心 imei telephonymanager getsystemservice telephony service getdeviceid 在manifest.xml檔案中要新增 建立日期 2010 4 29 下午05 02 47 import android.os.bundle import ...

如何獲取dnf體驗服資格,如何獲取DNF體驗服資格?

班汀蘭榮子 注 請區別正式服客戶端,安裝於新目錄下。體驗服bug反饋專區 需用qq登陸 http gamebbs.qq.com cgi bin bbs show main?groupid 197 20002 盜夢語者 勸你別對體驗服報那麼高期望。第一,體驗服雖然無限疲勞,雙倍經驗,但是其實爆粉的機率...