2015-12-11 54 views
2

我試圖將CString轉換爲int和float,但無法找到任何C++庫函數來完成此操作。請幫忙。如何將CString轉換爲整數和浮點數?

+0

直視的atoi和ATOF功能 – PRIME

+0

看看這個頁面 http://stackoverflow.com/questions/12947607/string-to-float-using-stringstream – PRIME

+0

我嘗試了這些功能,但沒有工作 – Anas90

回答

5

做MFC的正確UNICODE兼容的方法如下:

CString sInt = _T("10"); 
int n = _ttoi(sInt); 

CString sFloat = _T("10.1"); 
float f = _ttof(sFloat); 

正如大衛·赫弗南提到:如果你的項目配置僅是UNICODE和你不使用MBCS和沒有任何計劃瞄準老MS的操作系統,比如Window 98,你可以使用:

CStringW s = L"10"; 
int i = _wtoi(s); 

C++ 11可以使用以下內容:

std::string sInt = "10"; 
int i = std::stoi(sInt); 

std::string sFloat = "10.1"; 
double d = std::stod(sFloat); 
+1

不,它不是。做正確的Unicode方式不是使用TCHAR。使用這些由設計錯誤處理破壞的C標準庫函數永遠不是正確的。 –

+0

我同意C標準庫函數中的錯誤處理現在看起來很古老。但是我仍然覺得這個方法最簡單並且可以完成任務。 –

+0

這裏的投票相當令人失望。在2015年鼓勵TCHAR是奇怪的。更不用說你忽視檢查錯誤的事實。如何添加必要的錯誤檢查代碼並顯示它看起來有多棒。以防萬一提問者想要分辨出atoi(「2147483647」)和atoi(「2147483648」)之間的區別。 –