【问题标题】:QT - Fill a QMap with only key, and then add values for each keyQT - 仅用键填充 QMap,然后为每个键添加值
【发布时间】:2017-09-29 16:14:43
【问题描述】:

我想知道是否可以只用键填充 QMap,然后为每个键添加值。

例如,类似:

QMap<QString, QString> map;
map.insert("key", null (??));

感谢您的回答

【问题讨论】:

    标签: c++ qt hashmap qmap


    【解决方案1】:

    仅使用键填充映射是不可能的,但是您可以使用空字符串作为值对其进行初始化。

    请注意,在 Qt 中,空字符串和空字符串是有区别的。

    因此我会将地图的每个元素初始化为

    map.insert("key", QString()); // map of null strings
    

    相对

    map.insert("key", ""); // map of empty strings
    

    【讨论】:

    • 谢谢,正是我需要的
    • 你是对的,如果你传递一个只有空字符的字符串,我希望字符串为空。唉,Qt 在很多时候都没有意义。
    • @dtech 这是一个 QString 功能(其他 Qt 类型也共享),我最终发现它非常简洁。
    • @dtech 如果您希望 Qt 从一个空的 c 字符串创建一个空字符串,那么您首先将如何创建空字符串?这是完全合理的。我不确定nullptr 是否可以转换为QString,因为QString(nullptr) 应该使用QString(const char*) 构造函数。
    • @xander - 没有空 C 字符串之类的东西,"" 隐含地包含一个字符 - 空终止。您实际上是在传递一个空值,字符串长度也将被评估为空值。
    【解决方案2】:

    好吧,你可以用空字符串值填充它,然后简单地更改字符串:

    QMap<QString, QString> map;
    map.insert("key", "");
    
    // and later
    
    map[key] = "something else";
    

    【讨论】:

      猜你喜欢
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多