std::stringstream stream_french;
stream_french.imbue(std::locale("")); // French_France.1252
stream_french << 1000;
std::string value_french = stream_french.str();这段代码将1000转换为字符串“1000”,但是value_french1的值是-96而不是32,这是为什么?
value_french[0] = 49
value_french[1] = -96
value_french[2] = 48
value_french[3] = 48
value_french[3] = 48如果我这样做了
stream_french << "1 000";value_french1的值为32。该错误似乎与char的signedess有关,但为什么它只影响进行转换时的空格?
发布于 2010-10-17 22:18:54
-96是160的有符号等价物,即0xA0;如果您查看Windows 1252 codepage table,您会看到这样的字符是
A0 = U+00A0 :不间断空格
哪一个是a space that don't allow an automatic line break
文本处理软件通常假定可以在出现空格字符的任何位置插入自动换行符;不换行的空格可以防止这种情况发生(当然,前提是软件可以识别该字符)。例如,如果文本"100 km“不能完全放在行尾,软件可能会在"100”和"km“之间插入换行符。为了避免这种不受欢迎的行为,编辑器可能会选择在"100“和"km”之间使用不间断的空格。这保证了文本"100 km“不会被破坏:如果它不能放在一行的末尾,它将被整体移到下一行。
与"100 km“和”1/000“一样,很明显,在1和3个0之间使用换行是不可取的,因此使用了不换行的空格;这确实很聪明。
明确地说:用一个“正常”的空间:
1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 0001 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000
使用不间断的空格:
1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1/000 1 000 1/000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 000 1 000 1 000 1 000 000 1 000 000 1 000 1 000 1 000 000 1 0001.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1。
(如果您看不到任何差异,请尝试使用浏览器的字体大小进行放大/缩小)
https://stackoverflow.com/questions/3953553
复制相似问题