0

for ループは 65 ~ 90 をランダム化し、(char) を使用してアルファベット AZ で表示します。

コンソールに 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();
4

1 に答える 1

0

std::ofstreamは ( std::ostreamstd::cout )のインスタンスと同じ型から継承するため、それらのインターフェイスは同じです。いくつかのメソッドがファイル処理ストリームに追加されますが、それ以外は交換可能です。

上記で、あなたの側から必要とされる唯一のことは、現在、両方のケースで同じ方法で機能を実際に実装していることです: (スニペットを読むことによって) あなたはそうではありません.

  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);                                                    
} 
于 2012-07-16T05:37:09.537 に答える