2016-10-06 9 views
1

TCHARをintに変換したいのですが、変換するとASCII値が数値ではなくintになります。TCHARをintに変換するにはどうすればいいですか

コード:

#include "stdafx.h" 
#include <Windows.h> 
#include <iostream> 
#include <string> 

using namespace std; 

int converttoint() 
{ 
    TCHAR tchar[2]; 
    wcscpy_s(tchar, TEXT("5")); 

    int i = tchar[0]; 

    cout << i << endl; 

    return i; 
} 

int main(int argc, _TCHAR* argv[]) 
{ 
    converttoint(); 

    string in; 
    cin >> in; 
} 

Output: 53 

しかし、私は私が5

どのようにこれを行うことができますになりたいですか?

+5

あなたは '_ttoi'をどうやって使うのですか? –

+1

もうTCHARを使わないでください。これは90年代ではありません。しかし、あなたが@GillBatesをするのが正しければ。 –

+1

'TCHAR'は標準的なC++のものではありません。 –

答えて

2

は、あなたがまたは_wtoi()wchar_t UnicodeのUTF-16文字列の場合)、または取る他人(char ANSI文字列のために)atoi()ようないくつかのC関数を使用することができます追加の入力パラメータとしてのロケール:this MSDN documentationで詳細を読むことができます。

TCHARモデルを使用する場合は、上記のMSDNのマニュアルページに記載されているように、対応する関数は_tstoi()または_ttoi()です。

1

あなたは古い学校のやり方で「0」を取ることができます。これは数字の順序が入れられ、asciiを例に取っているためです。53は '5'の小数値で、48は '0 '、そして暗黙的にキャストされた値をとると、(53-48)は小数点の5に等しい。何かが次のようになる: int i = tchar[0] - '0';あなたはintに(整数を含む)、文字列を変換したい場合は

+0

あなたの前提は、標準によって義務づけられています。 '' 5 ' - ' 0''は常に '5'を返します。 – NathanOliver

+0

@ NathanOliver編集して、 '5' - '0'がなぜ機能するのか、その例を含めて編集しました。 – George

+0

私はasciiに依存しません。私は標準を含むでしょう。 C++はEBCDIC – NathanOliver

関連する問題