我正在使用istringstream
来破坏字符串的标记。假设我有一个这样的字符串:
print "this is a test"
它将它分为5个令牌:
打印| “这|是| a |测试”
它应该生成2个令牌:
打印| “这是一个考验”
有没有好办法解决它?我尝试手动完成,通过在文本中找到引号并执行子字符串,但这是太多的工作。
我想应该有一种更简单的方法,或者istringstream
的方法呢?
答案 0 :(得分:1)
好的iostreams标记为..令牌。在这种情况下,标记由空格分隔。你将不得不逐行阅读(或者整个事情!)并自己解析它。
答案 1 :(得分:1)
您可以使用wordexp
执行此操作,但它有限制,因为它使用命令shell进行解析。特别是,它会对处理重定向的shell符号做出反应。它还将进行环境变量扩展,这可能是您想要的也可能不是。
wordexp_t result;
wordexp(cmdstr.c_str(), &result, 0);
for (int i = 0; result.we_wordv[i]; ++i) {
//...
}
wordfree(&result);
详情可在wordexp
man page。