- ベストアンサー
VC++2005 CStringをshortに変換
VC++2005で、 CStringをshort型に変換できませんか? intに変換でしたらttoiとかがあるようですが、shortにするttosとかはないみたいですが・・。 ご存じの方お願いします・・・。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
template<typename T> struct sstream; template<> struct sstream<char> { typedef std::istringstream type; }; template<> struct sstream<wchar_t> { typedef std::wistringstream type; }; short to_short(const CString& s) { sstream<TCHAR>::type is( (const TCHAR*)s ); short val; is >> val; return val; } これでどうでしょうか。
その他の回答 (2)
- jacta
- ベストアンサー率26% (845/3158)
_tcstolを使って、いったんlong型に変換してから範囲チェックをしましょう。 CString str = _T("123"); TCHAR* endptr; errno = 0; long l = _tcstol(str, &endptr, 0); if (errno != 0 || *endptr != _T('\0') || l < SHRT_MIN || SHRT_MAX < l) { // エラー処理 } short result = static_cast<short>(l);
お礼
ありがとうございました。
- Tacosan
- ベストアンサー率23% (3656/15482)
「CStringをshort型に変換」というのが何をしたいのか分りかねます. 「int に変換」ではダメなのですか? そもそも short を積極的に使おうという気にはならないんだけど....
お礼
ありがとうございました。
お礼
ありがとうございました。