0

假设我有一个 std::string "55|6999|dkfdfd|"。它包含 3 个部分(每个部分后跟 |)。目前我将字符串放入 stringstream 并使用 getline 来恢复它们。但是我想知道是否有一个不需要流的更简单的解决方案。我只需要一种简单的方法来使用'|'从该字符串中获取行 作为delim,因为我认为流对它来说太过分了,我做错了。

4

3 回答 3

2

如果允许提升,那么boost::split将是一种选择。它可用于填充 a std::vector<std::string>,其中将包含根据指定分隔符从输入中提取的字段:

#include <vector>
#include <string>
using std::vector;
using std::string;

#include <boost/algorithm/string.hpp>
#include <boost/algorithm/string/split.hpp>
using boost::split;
using boost::is_any_of;

vector<string> fields;
split(fields, "55|6999|dkfdfd|", is_any_of("|"));
于 2013-02-12T18:07:07.603 回答
1

您可以std::strtok改用:

char *token = std::strtok(<yourstring>, "|");

< yourstring > 必须是类型char*;然后NULL用于之后的那些,std::strtok跟踪以前使用的字符串。

token = std::strtok(NULL, "|");
于 2013-02-12T18:03:25.917 回答
1

您所说的称为“标记化”字符串。这通常是你最好的选择。至于如何做,请参阅“如何在 C++ 中标记字符串?

于 2013-02-12T18:04:46.500 回答