将字符串标记为字符串向量[重复]
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() 用于线程应用程序。以上是关于将字符串标记为字符串向量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何将字符串转换为数组,用逗号标记android kotlin [重复]