Commit 2f13d41e authored by Victor Zverovich's avatar Victor Zverovich

Add to_wstring

parent 1e19ae83
......@@ -1327,10 +1327,16 @@ class arg_formatter_base {
FMT_DISALLOW_COPY_AND_ASSIGN(arg_formatter_base);
void write_char(char_type value) {
writer_.write_padded(1, specs_, [value](auto &&it) {
struct char_writer {
char_type value;
template <typename It>
void operator()(It &&it) const {
*it++ = internal::char_traits<char_type>::cast(value);
});
}
};
void write_char(char_type value) {
writer_.write_padded(1, specs_, char_writer{value});
}
void write_pointer(const void *p) {
......@@ -2172,11 +2178,11 @@ template <typename Range>
class basic_writer {
public:
using char_type = typename Range::value_type;
using iterator = decltype(std::declval<Range>().begin());
using format_specs = basic_format_specs<char_type>;
private:
// Output iterator.
using iterator = decltype(std::declval<Range>().begin());
iterator out_;
std::unique_ptr<locale_provider> locale_;
......@@ -3145,6 +3151,14 @@ std::string to_string(const T &value) {
return str;
}
template <typename T>
std::wstring to_wstring(const T &value) {
std::wstring str;
internal::container_buffer<std::wstring> buf(str);
wwriter(buf).write(value);
return str;
}
template <typename Char>
std::basic_string<Char> to_string(const basic_memory_buffer<Char> &buffer) {
return std::basic_string<Char>(buffer.data(), buffer.size());
......
......@@ -1608,6 +1608,10 @@ TEST(FormatTest, ToString) {
EXPECT_EQ("42", fmt::to_string(42));
}
TEST(FormatTest, ToWString) {
EXPECT_EQ(L"42", fmt::to_wstring(42));
}
TEST(FormatTest, OutputIterators) {
std::list<char> out;
fmt::format_to(std::back_inserter(out), "{}", 42);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment