0

istringstream用来打破字符串的标记。假设我有一个这样的字符串:

print "this is a test"

它将它分成 5 个标记:

打印 | “这 | 是 | 一个 | 测试”

它应该在哪里生成 2 个令牌:

打印 | “这是一个测验”

有什么好的方法可以解决吗?我尝试通过在文本中查找引号并执行子字符串来手动执行此操作,但工作量太大。

我想应该有一个更简单的方法,或者是istringstream这样做的方法?

4

2 回答 2

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手册页中找到详细信息。

于 2013-03-12T15:14:22.427 回答
1

那么 iostreams 通过 .. 标记进行标记。在这种情况下,标记用空格分隔。您将不得不逐行阅读(或者可能是整件事!)并自己正确解析它。

于 2013-03-12T15:01:07.627 回答