C 中,如何在標準庫的std string和常用庫(Qt,VC等)的QString之間進行選擇?

時間 2021-05-31 02:50:07

1樓:諸葛不亮

QString和std::string根本是兩個東西……

QString才是字串處理,內部同一編碼為Unicode,只要字串轉成QString就沒任何擔憂了

std::string那個渣渣,只是個封裝成class的char陣列罷了……對照Qt頂多就是QByteArray,還沒那個好用

2樓:

std::string和QByteArray對等。大多數情況用後者更好。

至於QString是unicode編碼的字串。問這個問題說明兩點:1,實踐中確實碰到了需要糾結的情況。

2,對這兩個東西理解不到位。

3樓:

根據需求吧

公司專案使用Qt做的,前段時間在做乙個列印模組的時候,列印的字元需要嚴格對齊,結果發現乙個問題

QString的length(),size()函式對字串計算長度,無論中文還是英文,都是1個字長度為1,(「中文」長度2,"Ch"長度也是2)但是很明顯,列印出來的效果乙個中文字元的是兩個英文本元的寬度。

唯一的解決辦法就是用QString::toStdString來轉換成string……

4樓:渡世白玉

我試著翻譯了些,但是現在還沒翻譯完畢:

[翻譯]理解Qt容器:STL VS QTL(一)——特性總覽

[翻譯]理解Qt容器:STL VS QTL(二)——迭代器

如果有興趣可以一起下面的翻譯完畢、、

個人觀點:現在QtCore 模組很給力了,單獨乙個qtcore的dll也很小(5.x依賴icu,你可以自己編譯不用這個依賴)、、、

Qtcore相對stl是stl裡的qtcore幾乎都有。stl對於字串的處理較弱,api很多也沒Qt的優美、、

std::string,std::wstring和QString相比個人以為有個很鬱悶的地方,就是std::

string和std::wstring沒有規定編碼,每個平台和每個編譯器實現均不一,在跨平台的時候有的時候這個編碼很坑,還有std::string對於漢子這些雙位元組的處理有時有點鬱悶、、QString內部是用的UTF-16,全平台都一樣的、、

個人傾向,如果涉及Qt了就全部Qt了,就是一般的程式沒有特殊要求也用QTL代替STL的、、優勢太多了、、至於效率。幾乎無差別的、、

5樓:鬧鐘

如果你確定要用 Qt 了,那完全可以用 Qt 那套基礎設施,比標準庫的好用不少,就算不用 GUI,就帶上 QtCore 也沒多大。做選擇的時候有時候要避免過度思考,用 Qt 寫的為什麼要移植到標準 C++?Qt已經可以保證在大多數平台可用了。

6樓:bsdelf

假設題主的意思是:在寫GUI程式的時候,如果GUI庫和STL都提供了某個功能(比如容器字串),應該如何在兩個庫之間選擇?

我的做法是分層,比如分為frontend+core。開發core的時候只用STL,保證平台可移植性,並且編譯為動態庫。開發GUI frontend的時候與UI庫緊密結合,盡量不用STL,和core交接的地方一律進行資料型別轉換,不要顧慮轉換開銷。

BTW 這樣的話一般在開發GUI frontend之前會先寫CLI frontend,試驗core的功能。

7樓:姚冬

Qt和STL根本就不是乙個層次的東西,談不上在它們之間如何選擇。

你可以說:在VC STL和stlport之間如何選擇,或者Qt和wxWidget之間如何選擇,這才是乙個層次東西。

如果你不是寫 GUI 程式,那麼不要用Qt,在非GUI領域Qt不具備優勢,反而帶來移植的麻煩。

如果寫GUI程式,那麼Qt是為數不多的選擇之一,甚至可能是最好的選擇。

c ,如何按照不同的要求呼叫標準庫sort函式排序?

Larry Sean sort函式的第三個引數是可選的,可以填你自定義的比較函式,返回bool型別。這個比較函式會當成小於號用。這樣就可以寫三個比較函式分別比較類中不同的值。如果從小到大就用小於號,從大到小就用大於號。至於怎麼設計,怎麼選擇排哪個,判斷一下調不同的函式就好了。好了,道理都講清楚了,加...

c 怎麼讓自己寫的庫像標準庫那樣只需include標頭檔案就可以使用而不需要把實現原始碼加入工程裡?

沒辦法像標準庫那樣。標準庫可以只include標頭檔案是因為編譯器會預設鏈結標準庫的實現。其它回答裡面說的header only library,是把實現也一起寫在標頭檔案裡面了。不需要另外的cpp而已。如果你的目的是讓庫方便使用,就做成header only library,或者退一步,提供乙個標...

C 標準庫為什麼不提供乙個方便的日期時間庫?

望山 機器內部表示的日期時間,現有庫已經基本夠用了。麻煩的是處理字串表示的日期時間。但是這個問題英國和美國都不同 10 08 09是哪年幾月幾號?要確定使用者是哪中國人 使用者在哪國地方 使用者的程式打算給哪中國人用 使用者的程式的使用者在哪國地方,完全超出了C 語言的能力,需要作業系統提供大量資訊...