Vik*_*kas 7 c++ stringstream setw clang++ libc++
是实现定义还是标准建议流的默认填充字符?
示例代码:
#include <iostream>
#include <iomanip>
#include <sstream>
int main ()
{
std::stringstream stream;
stream << std::setw( 10 ) << 25 << std::endl;
std::cout << stream.str() << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
同 clang++ --stdlib=libstdc++
$ clang++ --stdlib=libstdc++ test.cpp
$ ./a.out | hexdump
0000000 20 20 20 20 20 20 20 20 32 35 0a 0a
000000c
$
Run Code Online (Sandbox Code Playgroud)
同 clang++ --stdlib=libc++
$ clang++ --stdlib=libc++ test.cpp
$ ./a.out | hexdump
0000000 ff ff ff ff ff ff ff ff 32 35 0a 0a
000000c
Run Code Online (Sandbox Code Playgroud)
版
$ clang++ --version
Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn)
Target: x86_64-apple-darwin12.5.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)
我能够修复它std::setfill(' '),但很想知道它是不是一个clangbug.
一个流的默认填充字符s是s.widen(' ')根据27.5.5.2 [basic.ios.cons]段落3 /表128.什么字符结果从s.widen(' ')然而,依赖于std::locale作为s.widen(c)为(27.5.5.3 [basic.ios.members]第12段):
std::use_facet<std::ctype<cT>>(s.getloc()).widen(c)
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你应该std::ostringstream在你只是写入流时使用,并且std::endl永远不会使用.
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |