将cout值写入文本文件

时间:2012-07-16 02:38:19

标签: c++ file ofstream

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();

1 个答案:

答案 0 :(得分:0)

由于 std :: ofstream 继承与std::cout相同的类型是( std :: ostream )的实例,它们的接口是相同的,有些是方法被添加到文件处理流中,但除此之外,它们是可互换的。

如上所述,您需要做的唯一事情就是您实际上在两种情况下实现以相同的方式功能,目前:(通过阅读您的代码片段)您不是。

  1. std :: ofstream 示例没有任何循环
  2. 评估顺序不同(因为您不使用() std :: ofstream 代码段

  3. 要确保使用相同的实现,无论您是要写入文件还是标准输出,都可以将代码包装在函数中,使其接受对 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);                                                    
    }