【问题标题】:Tokenizing a string into a vector of strings [duplicate]将字符串标记为字符串向量[重复]
【发布时间】:2013-01-28 07:17:47
【问题描述】:

可能重复:
Splitting a string in C++

我不能使用 boost(因为我已经看到了许多标记化问题的解决方案)。 首先,我将输入的命令放入字符串中。 命令示例:

添加(姓名、电话号码)

int main()
{
    string line;
    cin >> line;
    cout << "Reservations>>";
    if(line[0] == 'a'){
    }
}

我需要确保一切在语法上都是正确的(他们使用了括号和逗号),我将首先将字符串分解为字符串本身,并将其放在向量中。所以我的第一个问题是:我怎样才能将由空格分隔的每个部分分开,以便将其推入向量中?然后我打算将'('与vector [1]的第一个字符([0])的字符串进行比较,并将','与vector [1]的[line.length()]的字符串进行比较 - 如何我会去引用位于向量中的字符串中的某些字符吗?

【问题讨论】:

  • 这是 thisthis 以及 SO 上的许多其他人的副本。
  • 感谢您的链接,但您知道如何引用位于向量中的字符串中的特定字符吗?
  • 你只是在检查括号余额吗?

标签: c++ string vector tokenize


【解决方案1】:

您可以尝试使用strtok()。您不能直接在 C++ std::string 上使用 strtok。它需要一个可变的以零结尾的 C 样式字符串,并且没有标准方法可以访问该形式的 std::string 的内容。

有关更多信息,请转至this

【讨论】:

  • 我之前尝试过 strtok,但它不允许我将字符串作为参数传递。
  • @WillNasby 查看这个问题的答案:stackoverflow.com/questions/11628346/…
  • 看看c_str(),它将字符串对象转换为c风格的字符串
  • 请注意 strtok() 不是线程安全的。将 strtok_r() 用于线程应用程序。
猜你喜欢
  • 2020-11-13
  • 2019-02-07
  • 2012-08-09
  • 2022-01-19
  • 2014-07-06
  • 2012-09-19
  • 1970-01-01
  • 2013-08-22
  • 2014-10-21
相关资源
最近更新 更多