在C ++写入文件时使用流格式化

时间:2013-02-06 10:01:13

标签: c++

我使用以下代码使用流写入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

如何更改上面的代码以获得预期的输出。谢谢你的帮助和时间。

3 个答案:

答案 0 :(得分: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; 
}

答案 1 :(得分: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; 

答案 2 :(得分:0)

试试I/O manipulators。在我看来setw(10)可以胜任。