我使用以下代码使用流写入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
如何更改上面的代码以获得预期的输出。谢谢你的帮助和时间。
答案 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>
,setw
和setiosflags
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)
可以胜任。