繁体   English   中英

将 cout 值写入文本文件

[英]Write cout value to text file

for 循环是随机化 65 - 90 并使用 (char) 以字母 AZ 显示它们。

我可以在控制台中以字母 AZ 显示,但我无法将它们写入文本文件中。

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

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

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

  1. std::ofstream示例没有任何循环
  2. 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);                                                    
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM