使用CString.Format()
,我傳遞一個std::map
給予int
時返回std::string
。爲什麼將std :: string傳遞給CString.Format()只會有時會崩潰?
所以:
CString cStr;
cStr.Format("%s", IntToStdStringMap[1]);
其中IntToStdStringMap[1]
返回一些字符串,我們會說 「你好,世界!」。問題是這似乎並不是每次都會崩潰。最終,我會收到訪問違規。
爲什麼會這樣呢?
請記住,這改變了代碼如下:
CString cStr;
cStr.Format("%s", IntToStdStringMap[1].c_str());
緩解這一問題。
任何想法?
小串的優化,大概。但它仍然是未定義的行爲,所以不值得推理。 –
爲CString的該文檔格式::甚至談不上傳遞對象的格式參數:https://msdn.microsoft.com/en-us/library/aa314327(v=vs.60).aspx –
@MillieSmith我同意。將std :: string傳遞給CString :: Format的機會是一個意外事件,顯示了未定義的行爲。我只是想了解更多關於爲什麼在編譯時沒有錯誤。我相信尼爾正在做一件事。 –