iostream实际上是一个别名,本体是basic_iostream模版类。
iostream和wiostream都是从basic_iostream模版类实例化出来的。
iostream是用于普通ANSI字符,wiostream用于宽字符(Unicode)。
iostream的定义:
typedef basic_iostream<char, char_traits<char> > iostream;
而basic_iostream则是继承自basic_istream和basic_ostream两个模版类。实例化之后成为istream或wistream以及ostream和wostream。
所以如果广义的说,iostream继承自istream和ostream也是对的。
不过本质上说实际上是basic_iostream继承自basic_istream和basic_ostream,然后用char实例化成了iostream。
==============================================
#include <sstream>
std::ostringstream oss;
oss <<"result=0"
<<"&type="
<<gm_mail.iMail_type
<<"&source="
<<gm_mail.iMail_source
<<"&status="
<<gm_mail.iStatus
<<"&time_send="
<<formatDateTimeInfo(gm_mail.iTime_send).c_str()
<<"&time_receive="
<<formatDateTimeInfo(gm_mail.iTime_received).c_str()
<<"&time_expire="
<<formatDateTimeInfo(gm_mail.iTime_expire).c_str()
<<"&send_id="
<<gm_mail.ullSender_id
<<"&send_name="
<<CGI::Encode(std::string(gm_mail.szSender_name)).c_str()
<<"&receive_id="
<<gm_mail.ullReceiver_id
<<"&receive_name="
<<CGI::Encode(std::string(gm_mail.szReceiver_name)).c_str()
<<"&titile="
<<CGI::Encode(std::string(gm_mail.szTitle)).c_str()
<<"&content="
<<CGI::Encode(std::string(gm_mail.szContent)).c_str();
std::string strReq = oss.str();
================================================
istringstream istringstream存储字符串并且可以将内部存储的数据输出到 局部变量, 类似于 sscanf
ostringstream 将外部数据输入到ostringstream中。
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
istringstream iss("12 34");
int a, b;
iss >> a >> b; //从字符串输入流iss中读取两个数
cout << a << " " << b << endl;
string str;
ostringstream oss(str); //输出到string str中
oss << a << " " << b;
cout << oss.str() << endl; //取出输出缓冲区的值
return 0;
}