August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
你可以将一个string对象作为istream的源,或者ostream的目标。从一个字符串读取内容的istream对象称为istringstream,保存字符并将其写入字符串的ostream对象称为ostringstream。例如,从字符串提取数值时,istringstream就很有用:
如果你试图从一个istringstream流的字符串尾之后读取字符,istringstream流会进入eof()状态。这意味着你可以将“标准输入循环”应用于istringstream流,实际上一个istringstream流就是一个真正的istream。
相反,对于要求一个简单字符串参数的系统,如GUI系统(参见21.5节),ostringstream可用于格式化输出来生成单一字符串。例如:
ostringstream的成员函数str()返回由输出操作到ostringstream对象的内容构成的字符串。c_str()是string的成员函数,它返回很多系统接口所要求的C风格字符串。
stringstream通常用于将真实I/O和数据处理分离。例如,str_to_double()的string参数通常来自一个文件(比如一个Web日志)或键盘。类似地,我们在my_code()中生成的消息最终会输出到屏幕的某个区域。再如,在11.7节中,我们使用stringstream来过滤输入中不希望出现的字符。因此,stringstream可以看作一种剪裁I/O以适应特殊需求和偏好的机制。 ...