将字符串标记为字符串向量[重复]

Posted

技术标签:

【中文标题】将字符串标记为字符串向量[重复]【英文标题】: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()]的字符串进行比较 - 如何我会去引用位于向量中的字符串中的某些字符吗?

【问题讨论】:

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

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

有关更多信息,请转至this

【讨论】:

我之前尝试过 strtok,但它不允许我将字符串作为参数传递。 @WillNasby 查看这个问题的答案:***.com/questions/11628346/… 看看c_str(),它将字符串对象转换为c风格的字符串 请注意 strtok() 不是线程安全的。将 strtok_r() 用于线程应用程序。

以上是关于将字符串标记为字符串向量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串中的逗号分隔数字转换为数字向量[重复]

如何将字符串数字的单元格数组转换为数值向量[重复]

如何将字符串转换为 uint32_t [重复]

如何将字符串转换为数组,用逗号标记android kotlin [重复]

正则表达式 - 将 HTML 转换为有效的 XML 标记 [重复]

将 HTML 标记字符显示为纯文本 [重复]