【发布时间】:2022-11-17 06:57:37
【问题描述】:
我正在尝试实现我自己的basic_string,但在打印我的字符串时遇到了问题。我不会使用 std::char_traits 和 std 的其他特征,因为我已经自己实现了。如何创建可用于我的字符串的 std::cout 的直接模拟并为此使用 std::basic_ostream? (不会自己创建basic_ostream)。
我尝试了一些解决问题的方法。
例如,下面的代码:
using Ostream = std::basic_ostream<char, CharTraits<char, int> >;
Ostream Cout;
由于这个原因不编译:
std::basic_ostream<char,CharTraits<char,int>>':没有合适的默认构造函数可用
我需要了解初始化我的 cout 版本的最合适方法是什么。
【问题讨论】:
-
不能为
std::ostream& operator<<(std::ostream&, const YourOwnStringType<CharT, CharTraits<CharT, N>>&)创建重载吗? -
en.cppreference.com/w/cpp/io/basic_ostream/basic_ostream 因为它实际上并没有……等等……有一个默认的构造函数!
-
@TedLyngmo 不,由于
std::ostream = basic_ostream<char, char_traits<char>>;的原因,这不起作用,但我需要完全使用我创建的 CharTraits。 -
@CapyMaths 我根本不明白这个原因。您想创建自己的
basic_string并能够将其流式传输到ostreams,对吗?如果是这样,添加我建议的重载是通常的做法。 ... 或者也将N添加到字符串类型中。 example
标签: c++ cout stdstring char-traits