我得到了一本带有练习的教程书,基本上使用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;
}
答案 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