簡體   English   中英

字符串到char *特殊字符的轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM