[心得] string 轉 int、float、double、long ...
今天學弟問我個問題, "CString" 如何轉成 "long"
作業環境是在 Visual Studio 2005 & "Use Unicode Character Set"
學弟 google 的結果找到了一個 solution
CString showID = _T("1234");
long id = _ttol(showID);
我看了一下 code 有點... 這種 api 要怎麼記憶阿
我最多記得 C 用的 atoi 之類的 ~
每次寫的時候都要 google 太累了
我記得之前看書有個不錯的寫法,我花了一些時間重現出來~
基本想法如下:
CString showID = _T("1234");
wstring wstr = showID.XXX() // XXX 為 CString 轉 string 的成員函式
long id = from_wstring<long>(wstr);
因為 CString 是 MFC 專用的,所以我寫一個通用的 string 轉 long
而 CString 只要再想辦法轉成 string 就好
[註: 上述說明 string 泛指 wstring or string]
CString showID = _T("1234");
long id = from_wstring<long>(showID.GetBuffer(0));
// show.GetBuffer(0) 我是google的,有人知道更好的轉換方式嗎? CString -> string
我為 muti-byte 和 unicode 個寫個一個版本如下:
========================================
#include <iostream>
#include <string>
using namespace std;
template <typename T>
T from_string(const string& s)
{
istringstream is(s);
T t;
if(! (is >> t) ) throw "bad string";
return t;
}
template <typename T>
T from_wstring(const wstring& s)
{
wistringstream is(s);
T t;
if(! (is >> t) ) throw "bad string";
return t;
}
==========================================
這樣不管你要轉甚麼型態(不要太奇怪的= =)都很方便了
請安心服用XD
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.216.177.57
推
07/13 17:21, , 1F
07/13 17:21, 1F
→
07/13 17:21, , 2F
07/13 17:21, 2F
→
07/13 17:31, , 3F
07/13 17:31, 3F
→
07/13 17:32, , 4F
07/13 17:32, 4F
→
07/13 17:43, , 5F
07/13 17:43, 5F
→
07/13 17:44, , 6F
07/13 17:44, 6F
→
07/13 17:49, , 7F
07/13 17:49, 7F
→
07/13 17:58, , 8F
07/13 17:58, 8F
→
07/13 17:59, , 9F
07/13 17:59, 9F
→
07/13 23:24, , 10F
07/13 23:24, 10F
推
07/13 23:44, , 11F
07/13 23:44, 11F
→
07/14 08:20, , 12F
07/14 08:20, 12F
→
07/14 08:21, , 13F
07/14 08:21, 13F
→
07/19 10:06, , 14F
07/19 10:06, 14F