for循环是随机化65 - 90并使用(char)以字母A-Z显示它们。
我可以在控制台中使用字母A-Z显示,但我无法在文本文件中编写它们。
for(i = 0; i < 26; i++)
cout << (char) (letter[i] + 'A' - 1) << " ";
cout << endl;
ofstream output;
output.open("output.txt");
output << (char)letter[i] + 'A' - 1 << endl;
output.close();
答案 0 :(得分:0)
由于 std :: ofstream 继承与std::cout
相同的类型是( std :: ostream )的实例,它们的接口是相同的,有些是方法被添加到文件处理流中,但除此之外,它们是可互换的。
如上所述,您需要做的唯一事情就是您实际上在两种情况下实现以相同的方式功能,目前:(通过阅读您的代码片段)您不是。
()
) std :: ofstream 代码段要确保使用相同的实现,无论您是要写入文件还是标准输出,都可以将代码包装在函数中,使其接受对 std的引用:: ostream ,如下面的代码段所示。
#include <iostream>
#include <fstream>
void
do_whatever (std::ostream& output_stream)
{
int letter[] = {
1,2,3,4,5,6,7,8,9,10,11,12,13,14,
15,16,17,18,19,20,21,22,23,24,25,26
};
for (int i =0; i < 26; ++i)
output_stream << (char) (letter[i] + 'A' - 1) << " ";
}
int
main (int argc, char *argv[])
{
std::ofstream file_stream;
file_stream.open ("file.txt");
do_whatever (file_stream);
do_whatever (std::cout);
}