• ベストアンサー

VC++2005 CStringをshortに変換

VC++2005で、 CStringをshort型に変換できませんか? intに変換でしたらttoiとかがあるようですが、shortにするttosとかはないみたいですが・・。 ご存じの方お願いします・・・。

質問者が選んだベストアンサー

  • ベストアンサー
  • qwertfk
  • ベストアンサー率67% (55/81)
回答No.2

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; } これでどうでしょうか。

noname#157436
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.3

_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);

noname#157436
質問者

お礼

ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「CStringをshort型に変換」というのが何をしたいのか分りかねます. 「int に変換」ではダメなのですか? そもそも short を積極的に使おうという気にはならないんだけど....

noname#157436
質問者

お礼

ありがとうございました。

関連するQ&A