-1

次のコードを使用して、ストリームを使用して C++ でファイルに書き込んでおり、コードの後に​​出力が表示されます。ここでは、2 番目の列のサイズが 10 で、3 番目の列でも同じように値を右揃えにする必要があるようにフォーマットします。

for (unsigned int dvIdx = 0; dvIdx <  3; dvIdx++)
{
    dataFile << myData.TimeChanged().Format().c_str() << "  " <<  myData.GetValue() 
        << "  " <<  myData.GetQuality() << std::endl; 
}


2012-06-25 12:01:04.000  1  1083507713
2012-06-25 12:01:20.000  3  1029
2012-06-25 12:01:36.000  -empty-  2157642752

期待される出力は

2012-06-25 12:01:04.000        1  1083507713
2012-06-25 12:01:20.000        3        1029
2012-06-25 12:01:36.000  -empty-  2157642752

上記のコードを変更して、期待される出力を取得するにはどうすればよいですか。あなたの助けと時間をありがとう。

4

3 に答える 3

3

setwフォーマット指定子を見てください:

for (unsigned int dvIdx = 0; dvIdx <  3; dvIdx++)
{
    dataFile << myData.TimeChanged().Format().c_str() << "  " 
        << setw(10) <<  myData.GetValue() << "  "
        << setw(20) <<  myData.GetQuality() << std::endl; 
}
于 2013-02-06T10:04:12.333 に答える
1

を探す必要があり<iomanip>setwsetiosflags

dataFile << myData.TimeChanged().Format() << "  "
         << std::setw(10) << std::setiosflags(std::ios::right)
         << myData.GetValue() 
         << std::setw(10) << std::setiosflags(std::ios::right)
         << "  " <<  myData.GetQuality() << std::endl; 
于 2013-02-06T10:13:26.810 に答える
0

I/O マニピュレータを試してください。setw(10)私にはそれが仕事をするように見えます。

于 2013-02-06T10:05:24.503 に答える