gnz*_*lbg 1 c++ stringstream libstdc++ libc++
流式传输stringstreamlibstdc ++扩展?这个程序与编译gcc-4.2,gcc-4.7-2 (using -std=c++03)和铛3.2使用-std=c++11和libstdc++(感谢安迪警车,见注释).它不clang 3.2使用-std=c++11和编译-stdlib=libc++.
#include<iostream>
#include<sstream>
int main() {
std::stringstream s; s << "b";
std::cout << "ss: " << s << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
通过查看ofstream的构造函数,它可以采用a std::basic_streambuf<CharT, Traits>*或a basic_ostream& st.字符串流是一个std::basic_istream,但两者都是std::basic_ios<CharT, Traits>如此,我猜它应该工作.
以下更改使代码在clang下编译:
std::cout << "ss: " << s.str() << std::endl;
Run Code Online (Sandbox Code Playgroud)
做正确的方法是什么?cout << s;还是cout << s.str();?
不,这是C++ 03和C++ 11之间的区别.所有流都有一个转换运算符,可以使用if (s)和启用代码while (s).在C++ 03中,这通常operator void*()或类似的东西.
在C++ 11中,我们有明确的运算符,其中一个explicit operator bool()适用于if (s)但不适用于cout << s.
| 归档时间: |
|
| 查看次数: |
544 次 |
| 最近记录: |