[英]String to char * conversion for special character
我已經在C ++ / Qt中編寫了一個簡單的函數將QString轉換為char *。
該功能運行正常,但在某些特定字符上存在一些問題。 例如,將QString參數的“piñacolada”轉換為“ pi?a colada”。 我認為在toLatin1轉換中出現了問題。
我希望QString的“piñacolada”在char中保留“piñacolada” *
char *convertQStr2char(QString str) {
QByteArray latin_str;
char *return_str;
latin_str = str.toLatin1();
return_str = latin_str.data();
return return_str;
}
任何想法 ?
謝謝
latin1無法代表ñ字符,或者當您實際打印該字符時,其編碼錯誤。 您可以嘗試使用toLocal8Bit
而不是toLatin1
,這將確保使用的字符編碼是計算機上設置的字符編碼。 但是更好的方法是使用UTF8編碼,因此toUtf8
可以保留任何特殊字符。
就像其他答案中指出的那樣,除了編碼問題外,您當前的代碼也會導致無效的讀取。
這對我有用。 如前所述,返回類型已更改,以實現更好的內存管理:
std::string convertQStr2char(QString str) {
return std::string( str.toLatin1().constData() );
}
// usage:
std::string temp = convertQStr2char( str );
const char* tempChar = temp.c_str();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.