【发布时间】:2016-07-18 22:20:29
【问题描述】:
string 到 int 的映射工作正常。
std::map<std::string, int> // working
但我想将C-style 字符串映射到int
例如:
char A[10] = "apple";
map<char*,int> mapp;
mapp[A] = 10;
但是当我尝试访问映射到“apple”的值时,我得到一个垃圾值而不是 10。为什么它的行为与 std::string 不同?
【问题讨论】:
-
那是因为你不比较
operator[]中的字符串,而是字符串常量的地址。std::string是不同的东西。这就是为什么在C中使用strcmp函数来比较字符串,std::map中的operator[]使用简单的==进行比较。 -
@Black Moses 谢谢我明白了。这意味着我将不得不在这样的场景中使用 usr std::string。
-
不,它没有。这意味着你必须提供一个比较功能。
-
同意 Marshall Clow 的观点,但
string已为您完成,因此更容易。 @BlackMoses 也同意 Mephy。把它写下来,稍微说明一下如何使用比较器,你就会得到一个值得赞成的答案。
标签: c++ string dictionary stl