C 令牌字符串并存储在向量中
C++ tokenise string and store in vector
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。
相关文章:
- 访问存储在向量C++中的结构的多态成员
- 添加存储在向量中的大整数的函数出现问题
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 如何从用户那里获取输入并将其存储在向量中?
- 如何从文件中读取两个字符串和数字数组,并将它们存储在对象向量中
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- 在二维向量或数组中可以存储的最大元素数是多少?
- 存储在堆分配向量中的指针的免费存储
- 将相同共享指针的副本存储在不同的向量中是否是一种好的做法?
- 将数组信息存储到 c++ 向量中有一个"Access violation reading location"
- Sqlite3:将数据库表名存储在向量中
- 如何在数组和向量 c++ 中存储和保存输入
- C++ 将抽象类型的动态分配对象传递给函数并存储在向量中
- 代码将向量存储为向量<vector>,为什么没有错误消息?
- 替代STD ::向量存储参考而不是对象的副本
- 将向量存储在<file> CStringArray 中?
- 将可变大小结构的向量存储在c++中的二进制文件中
- 使用向量c++存储和洗牌一副牌
- 将指针向量存储在文件中并再次读取它们
- 是否可以/建议将向量存储在结构中?C++