4

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

編集:

TextReader 値 = 新しい StreamReader(@"txt");

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

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

4

3 に答える 3

2

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

-1 (これは有効な文字値ではなく、ストリームの終わりを表します。これが、メソッドがこのように機能する理由です。つまり、確認できます) を確認した後、キャストするだけで変換できます。

于 2011-06-27T00:53:27.527 に答える
2

Readintストリームの終わり (-1) を検出できる o を返します。はい、結果を のように char にキャストするだけですvar c = (int) reader.Read();

典型的な使用法:

while (true)
{
    int x = reader.Read();
    if (x == -1) break;
    char c = (char) x;
    // Handle the character
}
于 2011-06-27T00:53:46.277 に答える
2

StringReader クラス(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...
}
于 2011-06-27T00:52:38.583 に答える