首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C++ 中 std::wstring 與 Qt QString 相互轉換完整指南

     編輯:關於C語言

應用場景

項目中集成第三方庫,其接口使用 std::wstring;自身業務邏輯基於 Qt,習慣用 QString 處理字符串(如替換、分割、正則等)。需在兩者間高效、無損轉換。

核心 API

轉換方向關鍵函數說明
std::wstring → QStringQString::fromStdWString()靜態工廠方法,直接構造 QString
QString → std::wstringQString::toStdWString()成員函數,返回標準寬字符串

完整示例

#include <string>
#include <QString>

int main() {
    // 1. 初始寬字符串(Windows 路徑含反斜線)
    std::wstring wStr = L"C:\\windows\\system32\\hao123\\tianCai\\";

    // 2. wstring → QString
    QString qStr = QString::fromStdWString(wStr);

    // 3. 利用 QString 強大功能:將單反斜線替換為雙反斜線(或正斜線)
    qStr.replace(L"/", L"\\\\");   // 注意:C++ 字面量需雙重轉義

    // 4. QString → wstring 回傳給第三方庫
    wStr = qStr.toStdWString();

    // 結果:wStr 變為 L"C:\\\\windows\\\\system32\\\\hao123\\\\tianCai\\\\"
    return 0;
}

進階提示

  • 編碼一致性:確保專案編碼(如 UTF-16LE on Windows)與 wchar_t 寬度匹配,避免跨平台亂碼。
  • 性能考量:頻繁轉換涉及內存分配與拷貝,熱路徑建議統一使用 QString 或 std::wstring 其一,減少來回轉換。
  • NULL 終止符:fromStdWString 依賴 wstring 內部長度,不要求額外結束符;toStdWString 生成的字符串自帶結束符。

擴展:UTF-8 / std::string 互轉

// std::string (UTF-8) ↔ QString
QString q = QString::fromUtf8(stdStr.c_str());
std::string s = q.toUtf8().constData();
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved