-1

我正在使用以下代码使用流在 C++ 中写入文件,并且输出显示在代码之后。在这里,我想格式化为第二列的大小为 10,并且第三列的值也应该以相同的方式右对齐。

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 回答