【发布时间】:2013-12-15 23:50:45
【问题描述】:
我刚遇到以下情况:
std::map< int, std::string > mm;
mm[ 1 ] = 5;
std::cout << mm[1];
assert( mm.find( 1 ) != mm.end() );
这确实 NOT 打印任何内容,而 assert 确实 NOT 失败。
这似乎是一个错字,它一定是mm[ 1 ] = '5';。想通之后,我尝试了:
std::string s1( 5 );
std::string s2 = 5;
如果编译成功,则无。会发生什么?
【问题讨论】:
-
如果有人建议一个更好的标题,我会很高兴。
-
5 的问题是 char=0x05 不是可打印的。如果你写了一个更大的数字,你会得到一个可识别的字符被打印出来。
-
为什么应该是
mm[1] = '5'。既然你使用的是字符串,不应该是mm[1] = "5"吗? -
@0x499602D2 - 在这种情况下是一样的。但是是的,也可以是
"5"。