【发布时间】:2023-04-02 10:21:01
【问题描述】:
流式传输 stringstream 是 libstdc++ 扩展吗?该程序使用-std=c++11 和libstdc++ 与gcc-4.2、gcc-4.7-2 (using -std=c++03) 和clang 3.2 一起编译(感谢Andy Prowl,参见cmets)。它不能使用-std=c++11 和-stdlib=libc++ 与clang 3.2 一起编译。
#include<iostream>
#include<sstream>
int main() {
std::stringstream s; s << "b";
std::cout << "ss: " << s << std::endl;
return 0;
}
通过查看 ofstream 的构造函数,它可以采用 std::basic_streambuf<CharT, Traits>* 或 basic_ostream& st。字符串流是std::basic_istream,但两者都是std::basic_ios<CharT, Traits>,所以我猜它应该可以工作。
以下更改使代码在clang下编译:
std::cout << "ss: " << s.str() << std::endl;
正确的做法是什么? cout << s; 或 cout << s.str(); ?
【问题讨论】:
-
好像可以编译here
-
谢谢,是的!它在那里用clang编译,但我猜clang在那里使用libstdc++。
-
@AndyProwl 我已将您的信息添加到帖子中,谢谢!
标签: c++ stringstream libstdc++ libc++