格式化输出以类似于C ++中的表

时间:2014-12-05 23:07:32

标签: c++

我正在使用sprintf来格式化我的数据。使用printf格式化时相同的输出效果很好但我不能使用printf,因为我使用输出数据发送电子邮件。

for(...)
{
 sprintf(sLuns, "%-50s%-50s%-50s%-3d%-14s", str1, str2, str3, int1, str4);
 string sRow(sLuns);
 sTable = sTable + "\n" + sRow;
}

sTable的输出如下所示。所有列的宽度都不是常量。这是因为我正在将行元素转换为C字符串吗?

Name1      Str1       Str2       10         str3 
Name1      Str1       Str2       10         str3
Name111      Str1       Str2       10         str3

1 个答案:

答案 0 :(得分:2)

我发现您的问题上也有C++标记。因此,我建议您使用C++

您可以使用iomanip中的leftsetw来获得您想要的内容。

示例:

#include <string>
#include <iostream>
#include <strstream>
#include <iomanip>

using namespace std;

string str1 = "str1";
string str2 = "str2";
string str3 = "str3";
string str4 = "str4";
int i = 10;

int main()
{
    strstream str;

    str << left
        << setw(10) << str1
        << setw(10) << str2
        << setw(10) << str3
        << setw(10) << i
        << setw(10) << str4
        << endl;

    cout << str.rdbuf() << endl;

}