1
vector<data> getList = readContent();
string output = "";
ostringstream conv;
istringstream is;

output += "s: 200 OK\nThe list of records in the book:\n";

for(int j = 0; j < getList.size(); j++)
{
 conv << getList[j].record;

 output += conv.str();
 output += "     ";
 output += getList[j].fName;
 output += " ";
 output += getList[j].lName;
 output += "     ";
 output += getList[j].phoneNum;
 output += "   \n";

 conv.str("");
}

send(s, (char *)output.c_str(), strlen((char *)output.c_str()), 0);

readContent() 返回一个向量,其中包含从文件中读取的所有数据。这是打印向量中的所有内容。但是,我无法弄清楚如何以特定方式格式化向量中的每一件事:

记录从左侧开始 0 个空格
fName从左侧开始 10 个空格
lName在 fName之后的空格之后开始
phoneNum从左侧开始 30 个空格

全部在 1 行。 这是一个图片示例(无法在此线程编辑器上格式化...)

http://i.imgur.com/bbAlDWX.png

我知道这可以使用 setw() 来完成,但只有当您使用 << 运算符直接输出时(或者我错了吗?)。它需要采用字符串的形式,以便我可以通过套接字将其发送给客户端。

有谁知道我能做什么?

4

1 回答 1

2

#include <iomanip>并使用它的所有工具。

您可以使用string与输出相同的方式构建一个cout#include <sstream>stringstreams

stringstream ss;
ss << //do stuff the same way you'd cout
return ss.str(); //or whatever you need to do with the built string
于 2013-10-10T00:04:45.410 回答