QT關於中文目錄的一些注意事項

2021-10-14 02:00:21 字數 1056 閱讀 3204

需要標頭檔案

#include getmapfilepath = qfiledialog::getexistingdirectory(this,tr("檔案對話方塊!"), "c:");

qtextcodec *code = qtextcodec::codecforname("gb2312");

std::string name = code->fromunicode(getmapfilepath).data();

file *fpw=fopen(name.c_str(),"wb");

if(fpw==nullptr){

qdebug()<<"error rfopen"《假設

qstring str = "string";

const char* c = str.tostdstring().c_str()

單步除錯顯示的結果可能會是』\0』

而當我這樣寫時

std::string s = str.tostdstring(); 

const char* c = s.c_str();

c 是"string"

為啥呢???

原來有可能是這樣的。

str.tostdstring().c_str()tostdstring()是乙個臨時std::string變數,而c_str()是指向這個臨時std::string變數的字串位址,所以傳給c時這個臨時std::string變數已經被析構,其內容是空,c_str()自然就是』\0』。不過這種情況在未知情況下發生,有時直接寫qstring::tostdstring().c_str()也是好用的。

為了避免出錯,最好還是

std::string s = str.tostdstring(); 

const char* c = s.c_str();

這樣寫比較好。

多寫幾個字,少出點錯,下次記住了!

一些注意事項

0.解題思路 a.普通思路 b.遞迴 bfs dfs c.動態規劃 比遞迴快 d.雙指標 比for迴圈快 如 快慢指標方法 e.用棧 1.陣列初始化 int a new int 5 a 0 預設為0.二維陣列也一樣。boolean b new boolean 5 b 0 預設為false.strin...

Linux 的一些注意事項(目錄)

1.注意事項 1.1linux嚴格區分大小寫 1.2linux中所有內容以檔案的形式儲存,包括硬體 硬碟檔案是 dev sd a p 光碟檔案是 dev sr0等 1.3linux不靠副檔名區分檔案 型別 壓縮包 gz bz2 tgz 二進位制軟體包 rpm 網頁檔案 html php 配置檔案 c...

關於gets函式的一些注意事項

函式 gets 字元 指標 標頭檔案 stdio.h c中 c 不需包含此標頭檔案 原型 char gets char buffer 功能 從stdio流中讀取字串,直至接受到換行符或eof時停止,並將讀取的結果存放在buffer 指標所指向的字元 陣列中。換行符不作為讀取串的內容,讀取的換行符被轉...