2015-08-20 50 views
0

我寫了一個運行循環的C++程序。每當循環結束矩陣的值(例如A[i][j])時,都會使用數值方法進行更改。在C++中命名文件

我通常做的是輸出的A在使用if特別是循環計數器這個最新值 - elseswitch聲明,輸出在if提及的某個文件中的值 - else聲明。但是,如果我想在每個循環計數器中獲取矩陣值,那我該怎麼做?

我不能寫所有的條件。 請幫忙,或者更好的,如果可能的話提供一個僞代碼,這樣對於一個循環計數器值(可以說i)的1文件名是1.txt1.dat)和i=2文件名是2.dat等等。

我已經添加了一個示例代碼,以我想要什麼。

int main() 
{ 
    string str=""; 
    int a[10]; 
    for(int i=0;i<10;i++) 
    { 
     a[i]=i; 
    } 

    for(int t=1;t<16;t++) 
    { 
      str=t; 
      ofstream data("str.dat"); 
      if(data.is_open()) 
      { 
       cout << "File Opened successfully!!!. Writing data from array to file" << endl; 
       for(int i=0;i<10;i++) 
       { 
        data<<a[i]<<endl; 
       } 
      } 
      else //file didn't open 
      { 
       cout << "File could not be opened." << endl; 
      } 

      for(int m=0;m<10;m++) 
      { 
       a[m]=2*a[m]; 
      } 

    } 

    return 0; 
} 

在這段代碼中,我得到的是一個名爲str.dat的文件。我希望它是1.dat,2.dat,3.dat等,通過將t的值傳遞給字符串str,然後讓文件運行的次數爲t。

我希望這有助於理解問題。

+7

請首先包含您的嘗試代碼,並更詳細地解釋您現在擁有的內容與您想要的行爲。 – sunny

+0

請提供您試過的代碼 –

+0

我已經添加了代碼plz看看它......重新構建了這個問題來幫助理解 –

回答

-1

我相信你正在尋找這樣的:

#include <sstream> 

// ... 

std::ostringstream filename; 
filename << "File-" << i << ".dat"; 
std::ofstream file(filename.str().c_str()); 

它使用一個字符串流(輸出字符串),構建從固定的文本文件名和i值。然後,使用其成員函數.str()從字符串流中提取構造的字符串,並將其作爲參數傳遞給文件輸出流的構造函數。這意味着它會打開相應的文件。

+0

如果在downvote背後有一些建設性的批評,我會愛上聽到它。如果它是錯誤的,我更願意更正答案。 – Angew

1

至於爲這個簡單:

for(int i = 0; i < someValue; ++i) { 
    std::string filename = std::to_string(i) + ".txt"; 
    ... 
} 
0

感謝所有幫助.....終於得到它(有一定的幫助)......我在這裏把它粘貼萬一有人需要它的未來.......

int main() 
{ 
    int a[10]; 
    for(int i=0;i<10;i++) 
    { 
     a[i]=i; 
    } 

    for(int t=1;t<15;t++) 
    { 
      string name=""; 
      name+=to_string(t); 
      ofstream data(name.c_str()); 
      if(data.is_open()) 
      { 
       cout << "File Opened successfully!!!. Writing data from array to file" << endl; 
       for(int i=0;i<10;i++) 
       { 
        data<<a[i]<<endl; 
       } 
      } 
      else //file didn't open 
      { 
       cout << "File could not be opened." << endl; 
      } 

      for(int m=0;m<10;m++) 
      { 
       a[m]=2*a[m]; 
      } 

    } 

    return 0; 
}