【问题标题】:Convert a String to a paired vector?将字符串转换为配对向量?
【发布时间】:2012-12-12 17:46:34
【问题描述】:

我有一个字符串:

1,a,2,b,3,c etc

我想把它转换成对向量:

std::vector<std::pair<int, QString> > myVector;

1 是 int,a 是字符串,2 是下一个 int,b 是下一个字符串,以此类推。

谢谢

【问题讨论】:

  • StackOverflow:做你的功课,所以你不必!

标签: c++ qt


【解决方案1】:
int main()
{
  QString foo = "1,a,2,b,3,c";
  QStringList splits = foo.split(',');
  assert(splits.size() % 2 == 0); // check if even
  qDebug() << splits;

  std::vector< std::pair<int, QString> > vs;
  for(QStringList::const_iterator it = splits.begin(); 
      it != splits.end(); ++it) { 
    bool ok;
    QStringList::const_iterator tmp = it;
    ++it;

    vs.push_back(std::make_pair(tmp->toInt(&ok, 10), *it));
    assert(ok); // check if conversion worked
  }
  return 0;
}

【讨论】:

  • assert' 未在此范围内声明
  • 删除该行并进行测试也会导致应用崩溃
  • @user1013512 哎呀。包括标题cassert。此外,修复了崩溃。
  • 如果解析外部输入,不要使用assert(),它是正确的。 (并且不会在发布模式下崩溃)。
  • @FrankOsterfeld 完全正确。我只是用它来显示代码假设的不变量。
猜你喜欢
  • 1970-01-01
  • 2017-04-20
  • 2013-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-09-19
  • 2020-02-27
  • 1970-01-01
  • 2017-12-11
相关资源
最近更新 更多