
On Wed, 2 Mar 2011 04:54:46 -0800 (PST), Artyom wrote:
Is the result of lexical_cast<std::string> locale-dependent? One of my contributors has submitted a fix for a problem he says is caused by lexical_cast adding commas to a port number, e.g.: 65535 becomes "65,535".
[..]
If you want to do casting without locale context (which is desirable)
std::ostringstream ss; ss.imbue(std::locale::classic()); // C locale ss << 65535; return ss.str();
Thanks! So std::locale::classic effectively means 'turn locale awareness off'?
Unfortunately this problem is very common and causes many bugs, especially in C with setlocale and printf.
I can imagine! It's so subtle and unexpected. In fact, I used lexical_cast precisely because I thought it wouldn't do anything funky with the conversion. At least that's how I interpreted the documentation: "For more involved conversions, such as where precision or formatting need tighter control than is offered by the default behavior of lexical_cast, the conventional stringstream approach is recommended." Alex -- Easy SFTP for Windows Explorer (http://www.swish-sftp.org)