C++ C++;计数INI值而不使用键名称

C++ C++;计数INI值而不使用键名称,c++,ini,C++,Ini,假设我有这个ini文件: [Ranks] John = 0 David = 0 Albert = 3 Tommy = 1 Cyrus = 3 Adam = 0 Sarah = 1 Alecia = 3 我想数一数我有多少0,1和3。当我有名字并检查它们的值然后计算它们时很容易,但是当我没有名字时怎么可能计算它们呢 我更喜欢使用一些简单的WINAPI,而不是使用任何类或库 PS:我使用的是MFC,我不认为有任何预定义的函数用于这样一个相当专门的任务 我看不出你是


假设我有这个ini文件:

[Ranks]

John    = 0
David   = 0
Albert  = 3
Tommy   = 1
Cyrus   = 3
Adam    = 0
Sarah   = 1
Alecia  = 3
我想数一数我有多少
0
1
3
。当我有名字并检查它们的值然后计算它们时很容易,但是当我没有名字时怎么可能计算它们呢

我更喜欢使用一些简单的WINAPI,而不是使用任何类或库

PS:我使用的是MFC,我不认为有任何预定义的函数用于这样一个相当专门的任务

我看不出你是否有要查找的条目名称有什么区别

不过,基本算法非常简单:

  • 创建一个
    std::map
    ,其中包含您感兴趣的每个值作为键,以及一个值0(这将是这些值的最终计数)
  • 读取文件的每一行
  • 如果行不是以
    [
    开头并且包含
    =
  • 提取
    =
    和线端之间的零件
  • 在地图中查找以提取的零件为关键字的条目
  • 增加该键的计数

  • 它不应该是一个映射?我对这部分“提取=和行尾之间的部分”有问题。拆分字符串对我来说一直是一个噩梦。我可以使用
    wcstok
    进行拆分,但我真的不喜欢这种方式。即使MFC CString类也没有拆分函数:|点1是毫无意义的。只需执行
    myMap[key]++;
    。这涵盖了3.2和3.3。如果某个键还不在映射中,则在其第一次出现时将插入该键,相关值将设置为
    int()
    ,即0,最后增加到1。@m对于点1,您可以使该方法只计算特定值。如果您想一般计算所有值,那么我同意,您不必单独计算点1