2017-06-01 18 views
-1

C++で特定のファイルを自動的に開こうとしています。ファイルのタイトルは同じですが、異なるファイルの番号のみです。このようなC++で特定のファイルを自動的に開く方法

'test_1.txt test_3.txt test_6.txt ...'

これらの数字は、通常の順序で表示されていません。ここ

そして今、私のコード

`

#include <fstream> 
#include <sstream> 
#include <string> 
#include <iostream> 

using namespace std; 

int main(){ 
    int n[20]= {4,7,10,13,16,19,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; 
    ifstream fp; 
    ofstream fo; 
    fp.open(Form("test%d.txt",n)); 


char line[200]; 
if(fp == NULL) 
{ 
    cout << "No file" << endl; 
    return 0; 
} 
if(fp.is_open()) 
{ 
    ofstream fout("c_text%d.txt",n); 
    while (fp.getline(line, sizeof(line))) 
    { 
     if(line[4] == '2' && line[6] == '4') 
     { 
      fout<<line<<"\n"; 

     } 
    } 
    fout.close(); 
} 
fp.close(); 
return 0; 
}` 

で、関数 'フォーム' は動作しません。私は別のアイデアはありません。 コメントやアイデアがあれば教えてください。 ありがとうございました!

+0

テンプレートとカウンタから文字列を作成するには 'std :: stringstream'を使用します。 – Barmar

答えて

0

コードにいくつかの問題があります。
1.私たちの言うとおり、あなたのファイルはtest_NR.txtですが、testNR.txtを開こうとしています。だから、あなたは_
が欠けているはずです。配列全体を参照することはできません。特定の値を指摘する必要があります。
3.すべてのファイルを1つずつ開く場合は、コードをループで囲む必要があります。

例:

#include <fstream> 
#include <sstream> 
#include <string> 
#include <iostream> 

using namespace std; 

int main(){ 
    int n[20]= {4,7,10,13,16,19,21,24,27,30,33,36,39,42,45,48,51,54,57,60}; 
    ifstream fp; 
    ofstream fo; 
    for(int i=0; i<sizeof(n); i++) 
    { 
     fp.open(Form("test_%d.txt",n[i])); 

     char line[200]; 
     if(fp == NULL) 
     { 
      cout << "No file" << endl; 
      return 0; 
     } 
     if(fp.is_open()) 
     { 
      ofstream fout("c_text%d.txt",n[i]); 
      while (fp.getline(line, sizeof(line))) 
      { 
       if(line[4] == '2' && line[6] == '4') 
       { 
        fout<<line<<"\n"; 
       } 
      } 
      fout.close(); 
     } 
    fp.close(); 
    } 

    return 0; 
    } 

*私は、コードをテストしていないが、私は愚かな何かを見落としていませんでした場合、それが動作するはずです。

+0

'Form()'とは何ですか? –

+0

Form()は 'ROOT'関数です。私は説明が間違って申し訳ありません。 –

関連する問題