C++ u32string的std::stringstream等效值?
是否有一个等价于C++ u32string的std::stringstream等效值?,c++,c++11,C++,C++11,是否有一个等价于std::stringstream的程序,允许我构建std::u32string?如果没有,我如何从大量由char32\t数据组成的可变长度文本片段构建std::u32string typedef basic_stringstream; 因此,您可以根据您的需要专门化std::basic_stringstream: typedef std::basic_stringstream<char32_t> u32sstream; typedef std::basic_st
std::stringstream
的程序,允许我构建std::u32string
?如果没有,我如何从大量由char32\t
数据组成的可变长度文本片段构建std::u32string
typedef basic_stringstream;
因此,您可以根据您的需要专门化std::basic_stringstream
:
typedef std::basic_stringstream<char32_t> u32sstream;
typedef std::basic_stringstream u32ssstream;
尽管其他答案都是正确的,但理论上这很好。实际上,并非所有功能都是如此
使用(某些版本的?)VisualStudio,区域设置对于char16\u t和char32\u t字符类型似乎无法正常工作。这些用于获取小数点和千位分隔符。因此,如果您尝试向流中添加一个数字,您将收到一个编译错误。我知道我使用的VS 2019 4.8.03752版本至少是这样。有时标准库会限制允许的模板参数。我不能肯定地说,但到目前为止,我没有看到任何禁止使用这个的东西:
std::basic\u stringstream ss
@Galik,谢谢,这似乎工作得很好。根据C++11/14/17
标准,如果它适用于char
和wchar\t
以外的类型,则它是实现定义的。我只能在linux和libstdc++上成功地使用std::basic_stringstream
。带有Visual Studio 2019的Windows和带有libc++的MacOS都拒绝使用无效代码。
typedef std::basic_stringstream<char32_t> u32sstream;