0

C ++では、多くのファイルを編集するために、次のようなファイルを使用します。

#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;

int main(){
    char nombre[10];
    int i;
    ofstream salida;

    for (i = 10; i < 20; i++) {
        sprintf(nombre,"archivo%d.txt",i);
        cout << nombre<<endl;
        salida.open(nombre);
        salida << 1000*i << endl;
        salida.close();
    }
    return 0;
}

より良いC++の方法が存在しますか?役に立たないchar[10]

4

3 に答える 3

2

C++std::ostringstreamタイプを使用できます。

for (int i = 10; i < 20; i++) {
    std::ostringstream filename;
    filename << "archivo" << i << ".txt";
    salida.open(filename.str().c_str());
       /* ... */
    salida.close();
}

のほとんどの用途は、sprintfに置き換えることができますstd::ostringstream<sstream>ただし、これを機能させるには、ヘッダーファイルをインクルードする必要があります。

お役に立てれば!

于 2012-05-15T23:37:02.903 に答える
2

あなたはc++文字列クラスを探しているだけだと思います。

にありますstd::string

これはかなり良いリファレンスです。

ここでは、文字列を次のように使用します。

#include <sstream>

...{ 
    std::string fileName = "archivo";
    std::string extension = ".txt";

    ...

    salida.open((fileName + NumberToString(i) + extension).c_str()); 

    ...
}

template <typename T>
string NumberToString ( T Number )
{
    stringstream ss;
    ss << Number;
    return ss.str();
}

上記はここで推奨されています。

于 2012-05-15T23:39:38.450 に答える
0

boost :: formatは、sprintfの非常に便利な代替品です。これがあなたが探しているものなら。

于 2012-05-15T23:36:30.457 に答える