ostringstream:
1、关于tellp()函数
#include <iostream>
#include <sstream>
int main()
{
std::ostringstream s;
std::cout << s.tellp() << '\n';
s << 'h';
std::cout << s.tellp() << '\n';
s << "ello, world ";
std::cout << s.tellp() << '\n';
s << 3.14 << '\n';
std::cout << s.tellp() << '\n' << s.str();
return 0;
}
运行结果:
参考文献:
https://zh.cppreference.com/w/cpp/io/basic_ostream/tellp
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
ostringstream is;
is.str("567");
cout << is.str() << endl;
is << "44";
cout << is.str() <<endl;
is << "@@@";
cout << is.str() <<endl;
return 0;
}
运行结果:
注意:第一次“56”被完全覆盖,第二次“7”也被覆盖。
原因(取自官网):
#include <sstream>
#include <iostream>
int main()
{
int n;
std::istringstream in; // could also use in("1 2")
in.str("1 2");
in >> n;
std::cout << "after reading the first int from \"1 2\", the int is "
<< n << ", str() = \"" << in.str() << "\"\n";
std::ostringstream out("1 2");
out << 3;
std::cout << "after writing the int '3' to output stream \"1 2\""
<< ", str() = \"" << out.str() << "\"\n";
std::ostringstream ate("1 2", std::ios_base::ate);
ate << 3;
std::cout << "after writing the int '3' to append stream \"1 2\""
<< ", str() = \"" << ate.str() << "\"\n";
}
output:
after reading the first int from "1 2", the int is 1, str() = "1 2"
after writing the int '3' to output stream "1 2", str() = "3 2"
after writing the int '3' to append stream "1 2", str() = "1 23"
https://en.cppreference.com/w/cpp/io/basic_ostringstream/str
istringstream
1、
#include<iostream>
#include<sstream>
using namespace std;
int main()
{
istringstream is;
is.str("567abc");
int i = 0;
is >>i;
cout<<i<<endl;
cout <<is.str() <<endl;
return 0;
}
运行结果: