2017-06-01 95 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。所以你錯過了_
2. fp.open(Form("test_%d.txt", n[i]);應該工作。你無法引用整個數組,你必須指出一個具體的值。
3.如果您想要逐個打開所有文件,則必須在循環中包圍代碼。

例子:

#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'函數。我很抱歉想解釋。 –

相關問題