使用 - > read()阅读文本并在控制台中显示

时间:2012-03-17 13:58:22

标签: c++ console c++-cli

我得到了一本带有练习的教程书,基本上使用read()方法复制了一个txt文件。使用以下代码时,这不是问题:

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

但是现在我想在控制台上显示txt文件的内容,使用:     控制台:写(输入); 我得到的只是数字(可能是unicode:(84104105115 ....) 该练习书在其解决方案中显示输入变量应该是“char”并且input = inputfile-> Read();应输入=(char)inputfile-> Read();代替。但据我所知,如果“input”是int或char,或者我使用convert via(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 :(得分:0)

inputfile和outputfile是结构体,我不认为函数peek(),write(),read()是它的成员吗?请发布您的结构声明。如果我的想法是错的,请纠正我。

答案 1 :(得分:0)

我不知道您使用的是哪个库,所以我无法深入了解更多细节。但是,通过查看您的代码/问题,我会说:

int input;
Console::Write(input);

将始终打印数字,因为输入被声明为它。如果您将char读入输入,它将自动转换为int。

如果要打印字符,则需要:

char input;
Console::Write(input);

此链接可能有所帮助:http://msdn.microsoft.com/en-us/library/system.console.write.aspx