2011-06-27 5 views
1

TextReader.ReadLine()は文字列を返しますが、TextReader.Read()はint値を返します。このint値は、私が認識しない何らかの形式のようにも見えます。この整数を文字に変換することは可能ですか?助けてくれてありがとう。C#。どのように私はTextReader.Read()を使用してint値を返しますか? charへの変換が可能ですか?

EDIT:

たTextReader値=新しいStreamReaderを( "TXT" @)。

string SValue1; 
    int Value1;  
    Value1 = Values.Read();   
    Console.WriteLine(Value1); 
    Console.ReadKey(); 

この値を読み取ると、51として出力されます。 txtファイルの最初の文字は3です。それはなぜですか?

+0

[C#でのIntチャーへ]の可能な重複(http://stackoverflow.com/questions/289792/int-to-char-in-c)用 –

答えて

0

(TextReaderのサブクラス)によれば、戻り値Read()はcharに変換できますが、ファイル/文字列の最後にあるかどうかをチェックする必要があります( - 1)。たとえば、ドキュメントからこの修正コードで:

while (true) 
{ 
    int integer = stringReader.Read(); 

    // Check for the end of the string before converting to a character. 
    if (integer == -1) 
     break; 

    char character = (char) integer; // CONVERT TO CHAR HERE 

    // do stuff with character... 
} 
+0

感謝help =]最初に読み込み値が最初の数値として存在するのはなぜですか? – Alexander

+0

@Alex私は知らない、多分@カールは正しい答えを持っていますか? –

2

ドキュメントがわかります:読むためにそれ以上のデータが存在しない場合には-1を返し、それ以外の場合は、整数として、文字を返します。整数は「何らかの形式で」ありません。整数は生データです。それはむしろ、「フォーマットされた」文字です。ディスク上のバイトは文字として解釈する必要があります。

-1(これは有効な文字値ではなく、ストリームの終わりを表します。そのため、この方法はこのように動作します:チェックできるようになります)、単純にキャストすることで変換できます。

2

Readは、ストリームエンド(-1)を検出できるintを返します。はい、あなたはvar c = (int) reader.Read();のように結果をcharにキャストします。

一般的な使用方法:

while (true) 
{ 
    int x = reader.Read(); 
    if (x == -1) break; 
    char c = (char) x; 
    // Handle the character 
} 
関連する問題