1. 程式人生 > >qt5.12 c2001常量中有換行符問題的解決辦法

qt5.12 c2001常量中有換行符問題的解決辦法

扣扣技術交流群:460189483 

當我們使用Qt程式設計時,如果程式程式碼中使用了中文字元,編譯程式有時會出現莫名其妙的編譯錯誤,提示“常量中有換行符”。

這究竟是怎麼回事,又該如何解決呢?

錯誤原因

在 Qt 中,預設的編碼是 Unicode,我們書寫的程式碼檔案被強制轉換為 utf8,但是,在簡體中文版的 Windows 作業系統中,預設編碼卻是 GBK。

Qt出現常量有換行符怎麼辦

因此,在編譯 Qt 程式時,如果程式碼中含有特定中文字元,Qt 的編譯器就會發生誤判,向我們報告“常量中有換行符”。

Qt出現常量有換行符怎麼辦

當然了,如果你使用別的一些中文字元,恰巧該字元編碼不含這些特定字元,則編譯時不會報錯,但程式執行時中文字元卻往往不能正常顯示。

Qt出現常量有換行符怎麼辦

那麼,這又該如何解決呢?知道了原因,解決起來也很簡單,主要思路有兩種:

一種是折中的解決方法:更改設定或調整程式碼,避免編譯錯誤

另一種是推薦的解決辦法:將本地編碼轉換為 Unicode 交由 Qt 處理

思路一:折中的解決辦法

折中的解決方法也有兩種:

1、更改設定

開啟Qt Creator,點選選單“工具”-“選項”。

Qt出現常量有換行符怎麼辦

在“文字編輯器”-“行為”選項卡中,將檔案編碼更改為 UTF-8,並且選擇“如果編碼是UTF-8則新增”。

Qt出現常量有換行符怎麼辦

2、程式碼調整

或者,在程式碼中用 QString.toLocal8Bit( ) 將 Unicode 編碼轉換為本地系統編碼。

Qt出現常量有換行符怎麼辦

經過以上處理之後,編譯期就不會再報“常量中有換行符”錯誤了。

推薦的解決辦法

使用以上方法之後,雖然編譯時將不會報“常量中有換行符”錯誤,但不能保證中文字元能正確顯示。

Qt出現常量有換行符怎麼辦

若想字元得以正常顯示,則可以使用 QString::fromLocal8Bit 來將本地字元編碼轉換為 Unicode 形式的 QString。畢竟,在這個越來越全球化的時代,Unicode 才是王道。

Qt出現常量有換行符怎麼辦