Date: Sat, 20 Jul 2019 22:24:12 +0100
Hi Jonny,
With respect to std::to_string, please see a reference to it here:
https://en.cppreference.com/w/cpp/string/basic_string/to_string
std::to_string appears to be defined specifically for primitive numeric
types that match up to using sprintf and a format specifier. I don't think
that std::to_string(bool) would be suitable, as it does not have a format
specifier like the others. And there is also the possibility that when
converting a bool to a string that the user genuinely want '0' or '1' to be
produced, as they may be trying to handle the result as data.
As Jake said, there is a format library coming out for C++20. That sounds
like a more desirable way to handle this problem, as like I mentioned,
choosing how one wants a bool to be represented textually is similar to how
one would want a float or a double represented textually.
Regards,
Garrett
On Sat, 20 Jul 2019, 21:39 Jonny Grant via Std-Proposals, <
std-proposals_at_[hidden]> wrote:
> Hi Garrett
>
> Many thanks for your reply.
>
> Yes, I see std::boolalpha sets an I/O flag.. but seems a bit of a long way
> to get it into a string, I'd need to use in conjunction with
> std::istringstream to get a string...
>
> I wanted to do something like this example:
>
> *Idea*
> std::string fmt(const std::string header, bool b)
> {
> return header + " " + std::to_string(b) + " set";
> }
>
> *How I would do now*
> As his doesn't work, I'd have it at present as:
> std::string fmt(const std::string header, bool b)
> {
> return header + " " + b?"true":"false" + " set";
> }
>
>
> Regards, Jonny
>
>
> On 20/07/2019 21:21, Garrett May via Std-Proposals wrote:
>
> std::boolalpha is already available:
>
> int main(){
> bool const a = true;
> std::cout << std::boolalpha << a << std::endl;
> }
>
> My gut instinct here is that one is supposed to control how one wants data
> to be printed out, in the same way as how float/double precision is done.
>
>
> On Sat, 20 Jul 2019, 21:16 Jonny Grant via Std-Proposals, <
> std-proposals_at_[hidden]> wrote:
>
>> Hello
>>
>> Could std::string to_string(bool value); be added? Currently it outputs
>> as a number due to the implicit conversion to int?
>> Feel it would have been more appropriate as "true" or "false".
>>
>> http://www.cplusplus.com/reference/string/to_string/
>>
>> $ g++-8 -Wall -o to_string to_string.cpp
>> $ ./to_string
>> 1
>>
>>
>>
>> // g++-8 -Wall -o to_string to_string.cpp
>> #include <string>
>> #include <iostream>
>> int main()
>> {
>> const bool a = true;
>> const std::string b(std::to_string(a));
>> std::cout << b << std::endl;
>> }
>>
>> Cheers, Jonny
>>
>>
>>
>> .
>>
>>
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> http://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>>
>
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> http://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
With respect to std::to_string, please see a reference to it here:
https://en.cppreference.com/w/cpp/string/basic_string/to_string
std::to_string appears to be defined specifically for primitive numeric
types that match up to using sprintf and a format specifier. I don't think
that std::to_string(bool) would be suitable, as it does not have a format
specifier like the others. And there is also the possibility that when
converting a bool to a string that the user genuinely want '0' or '1' to be
produced, as they may be trying to handle the result as data.
As Jake said, there is a format library coming out for C++20. That sounds
like a more desirable way to handle this problem, as like I mentioned,
choosing how one wants a bool to be represented textually is similar to how
one would want a float or a double represented textually.
Regards,
Garrett
On Sat, 20 Jul 2019, 21:39 Jonny Grant via Std-Proposals, <
std-proposals_at_[hidden]> wrote:
> Hi Garrett
>
> Many thanks for your reply.
>
> Yes, I see std::boolalpha sets an I/O flag.. but seems a bit of a long way
> to get it into a string, I'd need to use in conjunction with
> std::istringstream to get a string...
>
> I wanted to do something like this example:
>
> *Idea*
> std::string fmt(const std::string header, bool b)
> {
> return header + " " + std::to_string(b) + " set";
> }
>
> *How I would do now*
> As his doesn't work, I'd have it at present as:
> std::string fmt(const std::string header, bool b)
> {
> return header + " " + b?"true":"false" + " set";
> }
>
>
> Regards, Jonny
>
>
> On 20/07/2019 21:21, Garrett May via Std-Proposals wrote:
>
> std::boolalpha is already available:
>
> int main(){
> bool const a = true;
> std::cout << std::boolalpha << a << std::endl;
> }
>
> My gut instinct here is that one is supposed to control how one wants data
> to be printed out, in the same way as how float/double precision is done.
>
>
> On Sat, 20 Jul 2019, 21:16 Jonny Grant via Std-Proposals, <
> std-proposals_at_[hidden]> wrote:
>
>> Hello
>>
>> Could std::string to_string(bool value); be added? Currently it outputs
>> as a number due to the implicit conversion to int?
>> Feel it would have been more appropriate as "true" or "false".
>>
>> http://www.cplusplus.com/reference/string/to_string/
>>
>> $ g++-8 -Wall -o to_string to_string.cpp
>> $ ./to_string
>> 1
>>
>>
>>
>> // g++-8 -Wall -o to_string to_string.cpp
>> #include <string>
>> #include <iostream>
>> int main()
>> {
>> const bool a = true;
>> const std::string b(std::to_string(a));
>> std::cout << b << std::endl;
>> }
>>
>> Cheers, Jonny
>>
>>
>>
>> .
>>
>>
>> --
>> Std-Proposals mailing list
>> Std-Proposals_at_[hidden]
>> http://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>>
>
>
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> http://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
Received on 2019-07-20 16:26:19