常用 IO 库
我们常说的 C++ IO 库一般指 iostream
, fstream
, sstream
。
- iostream 包含了
istream
(从流读)/ostream
(从流写)/iostream
(读写流) - fstream 包含了
ifstream
(从文件读)/ofstream
(condition 文件写)/fstream
(读写文件) - sstream 包含了
istringstream
(从 string 读)/ostringstream
(向 string 写)/stringstream
(读写 string)
其实标准库还有宽字符版本,但我们这里不讨论,有兴趣的话可以参考参考链接。
iostream
和 fstream
是两个比较常用的IO 库,我们这里不再回顾,这里简单回顾一下
sstream
。
如果你熟悉 C 语言,就知道将 int 转换为 string 类型其实是一件很麻烦的事情,虽然标准库中提供了 itoa()
这种函数,但是依然需要对转换后的 C 风格字符串(char *)通过 std::string 的构造函数构造为 std::string。如果使用流操作,那么这将变得异常的简单:
#include <string>
#include <sstream>
#include <iostrea>
int main() {
// std::stringstream 支持读写
std::stringstream stream;
std::string result;
int number = 12345;
stream << number; // 将 number 输入到 stream
stream >> results; // 从 stream 读取到 result
std::cout < result << std::endl; // 将输出为字符串"12345"
}
如果希望让sstream 和 C 风格的字符串打交道,同样也可以:
#include <sstream>
#include <iostream>
int main()
{
std::stringstream stream;
char result[6];
stream << 12345;
stream >> result;
std::cout << result << std::endl;
}
需要注意的一点就是,在进行多次IO 操作时,如果希望结果彼此不影响,需要对 stream 对象进行一次 clear()
操作:
stream.clear()
从实验楼收集的资料,感觉不错,收藏起来,方便使用。