2012-05-10 38 views
1

目前,我在ini文件中保存了一個數據,它使用了QSetting類。我想知道,我怎麼能不使用qt將它轉換爲std :: string。有誰知道如何確定代碼以及decodec如何?將QSetting值轉換爲StdString

我的數據:

dataID="\x1\0\0\0\xd0\x8c\x9d\xdf\x1\x15\xd1\x11\x8cz\0\xc0O\xc2\x97\xeb\x1\0\0\0Z\xa3\xa3\xc9\x18\xb5>M\xa9=)\xb4\xda\xfb{\xfe\x4\0\0\0\x2\0\0\0\0\0\x3\x66\0\0\xc0\0\0\0\x10\0\0\0|\x16>\x17\x96\xda\xc4-O\xe9\x1f!\\\aAW\0\0\0\0\x4\x80\0\0\xa0\0\0\0\x10\0\0\0\x45\xf4K\x9e\xc2k$\f\xd2\xcbK\b\xf4\xd3\xdf}(\0\0\0\xb2\xb2\xf1\x13[sy\r\xeb\xa7\x96l\x8d\xd7\xa4\xccJ\xf6M\xc1\xf3U3W\xe4\xf7\xa6\x1a\x86s`v\xc2\x8d\x99\xdf!8\xd0G\x14\0\0\0\x35\x93\xeb\xcb\xa9\x16\xadXI\xe6\x46wY\x7f\x32\xb8\xd9\xec\xfb*" 

我願做

std::string data = convert(dataID); 

,其中轉換是一個純粹的C++函數

+0

你想採取由Qt序列化的數據並反序列化它沒有Qt?爲什麼首先使用Qt序列化它? – ildjarn

+0

@ildjarn可能非Qt應用程序需要訪問由Qt應用程序保存的內容,並且可能無法更改該其他應用程序。 Agus - 您可以訪問QSettings的源文件,因此您可以隨時查看它是如何在內部進行解碼的。 – tmpearce

回答

2

有誰知道如何確定代碼以及如何decodec ?

是的,你可以做到。 Read this document

請記住,QT以UTF16編碼方式在數據流中存儲字符串數據,而std :: string存儲8位字符串。所以你要麼需要一些編碼轉換例程(UTF16-> 8bit),要麼刪除每個不是ASCII的字符。