Чтение текста с помощью -> read () и отображение его в консоли - PullRequest
1 голос
/ 17 марта 2012

Я получил учебное пособие с упражнением, чтобы в основном скопировать текстовый файл с использованием метода read (). И там это не проблема, используя следующий код:

while (inputfile->Peek() != -1)
{
    input= inputfile->Read();
    outputfile->Write(input);
}

Но теперь я хотел показать содержимое txt-файла на консоли, используя: Консоль :: Write (вход); И все, что я получаю, это числа (вероятно, Unicode: (84104105115 ....) Книга упражнений показывает в своем решении, что входная переменная должна быть "char" и что input = inputfile-> Read (); должен быть input = (char) inputfile-> Read (); вместо. Но, насколько я понимаю, это не имеет никакого значения, если «input» - это int или char, или если я использую преобразование через (char). Консоль всегда показывает цифры, а скопированный файл всегда корректен. Я думаю, что -> Write () и -> Read () отлично работают с Unicode в качестве ввода, но Console :: Write () не работает. Может кто-нибудь прояснить это и показать мне, вероятно, довольно простое решение для выражения файла на консоли после того, как он был прочитан с помощью Read ()? (с readline у ​​меня нет проблем, я работаю над тем, чтобы понять это, но не всегда нахожу лучшее решение).

полный код:

#include "stdafx.h"

using namespace System;
using namespace System::IO;

int main(array<System::String ^> ^args)
{
int input;
StreamReader ^inputfile = gcnew StreamReader("text.txt");
StreamWriter ^outputfile = gcnew StreamWriter("textkopie.txt");
while (inputfile->Peek() != -1)
{
    input= inputfile->Read();
    Console::Write(input);
    outputfile->Write(input);
}
inputfile->Close();
outputfile->Close();


Console::ReadLine();
return 0;
}

Ответы [ 2 ]

0 голосов
/ 17 марта 2012

Я не знаю, какую библиотеку вы используете, поэтому не могу углубиться в детали. Однако, просматривая ваш код / ​​вопрос, я бы сказал:

int input;
Console::Write(input);

Всегда будет печатать числа, потому что ввод объявляется как it. Если вы прочитаете символ на входе, он будет автоматически преобразован в int.

Если вы хотите распечатать символ, вам нужно:

char input;
Console::Write(input);

Эта ссылка может помочь: http://msdn.microsoft.com/en-us/library/system.console.write.aspx

0 голосов
/ 17 марта 2012

inputfile и outputfile являются структурами, и я не думаю, что функции peek (), write (), read () являются ее членами?пожалуйста, опубликуйте объявление структуры.Поправь меня, если я ошибаюсь.

...