需要標頭檔案
#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 指標所指向的字元 陣列中。換行符不作為讀取串的內容,讀取的換行符被轉...