C 令牌字符串并存储在向量中

C++ tokenise string and store in vector

本文关键字:向量 存储 串并 令牌 字符 字符串      更新时间:2023-10-16
vector<string> ExprTree::tokenise(string expression){
     vector<string> store;
     string s;
     std::stringstream in(expression);
while(in >> s) {
  store.push_back(s);
    }
     return store;
}

当我输入算术表达式(5 5( 5

我得到输出:

(5

5(

5

但是我想要:

(
5

5
(

5

另外,代码仅将字符串分开,是否可以将不带有空格编写的字符串引用?即(5 5( 5

2更新您可以解决问题:

string s;
while(in >> s)
//instead, do 
char ch;
while(in >> ch)

然后处理空白空间的情况(和newline?(,如果条件

,请放置
if(ch != ' ')
store.push_back(ch);

那就是您所需的输入只是单位数字。您必须制作一个复杂的解析器才能处理更大的数字。为了制作更复杂的解析器,此功能很有帮助。http://www.cplusplus.com/reference/istream/istream/peek/

您可以使用strtok,strtok_r或boost tokenizer来完成您需要的事情。

这些将您放在多个定界器中拆分字符串。

如果要用多个线程拆分字符串,请使用strtok_r对strtok。

如果您需要一个示例,请只需Google。