使用C ++,是否有'\t'
的等效标准库常量,就像换行符一样?
理想情况下:
std::stringstream ss;
ss << std::tab << "text";
如果没有,为什么会这样?
(我知道我可以插入一个'\t'
,但我想满足我的好奇心。)
答案 0 :(得分:64)
没有。 std::endl
不是新行常量。这是操纵器,另外插入换行符,刷新流。
如果只是想要添加换行符,则应该只插入'\n'
。如果您只想添加标签,只需插入'\t'
即可。没有std::tab
或任何东西,因为插入标签加上刷新流并不是一个常见的操作。
答案 1 :(得分:12)
如果您想自己添加该功能,它将如下所示:
#include <iostream>
namespace std {
template <typename _CharT, typename _Traits>
inline basic_ostream<_CharT, _Traits> &
tab(basic_ostream<_CharT, _Traits> &__os) {
return __os.put(__os.widen('\t'));
}
}
int main() {
std::cout << "hello" << std::endl;
std::cout << std::tab << "world" << std::endl;
}
我不建议这样做,但我想添加一个完整性的解决方案。
答案 2 :(得分:4)
实际上,不需要它。
因为endl
首先执行将换行符插入\n
的相同工作,然后还刷新缓冲区。
在流上插入\t
不需要在之后刷新它。
答案 3 :(得分:3)
没有
ostream include文件中除了std::ends
之外,只有std::flush
(插入空字符)和std::endl
(刷新流)输出操纵符。
您可以在ios和iomanip包含文件中找到其他人。完整列表为here