5
ofstream outputFile ("output.txt");

if (outputFile.is_open())
{
     outputFile << "GLfloat vector[]={" <<  copy(vector.begin(), vector.end(), ostream_iterator<float>(cout, ", ")); << "}" << endl;
}
else cout << "Unable to open output file";

各フロートをカンマで区切って、ベクトルをファイルに出力するにはどうすればよいですか? 可能であれば、角かっこの印刷も避けたいと思います。

4

4 に答える 4

3

まず、 variable を呼び出さないでくださいvector。標準ライブラリのクラスの名前ではない名前を付けてください。

第二に、ベクトルの最後の要素の後にさえもostream_iterator追加しますが、これはあなたが望むものではないかもしれません(セパレーターはセパレーターでなければならず、ベクトルの最後の値をそれ以上の値から分離するものは何もありません)。','

forC++11 では、単純な範囲ベースのループを使用できます。

outputFile << "GLfloat vector[]={";
auto first = true;
for (float f : v) 
{ 
    if (!first) { outputFile << ","; } 
    first = false; 
    outputFile << f; 
}
outputFile << "}" << endl;

C++03 では、もう少し冗長になります。

outputFile << "GLfloat vector[]={";
auto first = true;
for (vector<float>::iterator i = v.begin(); i != end(); ++i) 
{ 
    if (!first) { outputFile << ","; c++; } 
    first = false;
    outputFile << *i;
}
outputFile << "}" << endl;
于 2013-04-04T16:55:51.043 に答える
0

これは、コードに含める必要があるだけの優れた汎用 (ヘッダーのみ) ライブラリであり、標準のコンテナーを簡単に印刷できます: http://louisdx.github.com/cxx-prettyprint/

于 2013-04-04T18:11:33.787 に答える