我正在使用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
答案 0 :(得分:2)
我发现您的问题上也有C++
标记。因此,我建议您使用C++
。
您可以使用iomanip
中的left和setw来获得您想要的内容。
示例:
#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;
}