c++标准IO 中的string流
sstream头文件
- sstream头文件定义了三个类型来支持内存和string之间的IO,在用户看来,string类就像是一个IO流一样。
istringstream
- 处理行内的多个单词(用空格分开),可以使用istringstream。以下代码将输入的一行单词缓冲,最后一并处理到vector中。
// 输入格式为: word1 word2 word3
void istringstream_test () {
vector<string> words;
string line, word;
getline(cin, line);
istringstream is(line); // 将istringstream绑定到line对象
while (is >> word) {
words.push_back(word);
}
vector<string>::iterator it = words.begin();
while (it != words.end()) {
cout << (*it) << endl;
it++;
}
}
ostringstream
- 逐步构造输出,最后一起打印。以下代码对输入的多个单词进行判断分流,最后输出。
// 输入格式为: word1 word2 word3
void ostringstream_test () {
vector<string> words;
string line, word;
getline(cin, line);
istringstream is(line); // 将istringstream绑定到line对象
while (is >> word) {
words.push_back(word);
}
ostringstream os, boomOs;
for (const string& entry: words) {
if (entry == "123") {
boomOs << "123boom" << ", ";
}
else {
os << entry << ", ";
}
}
cout << "os: " << os.str() << endl;
cout << "boomOs: " << boomOs.str() << endl;
}
stringstream
- 既可以读string数据,也可以向string写数据。