【发布时间】:2021-01-04 16:41:30
【问题描述】:
我想将字符串 sn-ps 解析为一个元组:
示例字符串:“Dolly Davenell,8809903417,1 Toban Circle,洛州”
元组
我从文件中读取字符串并使用 getline 将它们存储在向量 (myPersVec) 中,其中每个向量元素都是如上所述的字符串。
现在我的问题是我不知道如何分隔每个字符串元素并将其填充到每个元组元素中。
我知道我可以用分隔符分隔字符串元素,但是如何将其解析为元组? 然后我想将每个元组保存到另一个 Vector (my2ndVec)
我的问题是:一旦我有了字符串标记,我怎样才能以正确的顺序将它们解析为一个元组?
auto makeT([](std::string line, std::vector<std::tuple<std::string, unsigned int, std::string, std::string>>& my2ndVec, std::vector<std::string> myPersVec) {
std::string token;
std::string deli = ",";
int pos = 0;
while ((pos = line.find(deli)) != std::string::npos) {
token = line.substr(0, pos);
std::cout << token << std::endl;
line.erase(0, pos + deli.length());
}
//how can i parse the tokens now into the tuple? and how do i parse them since i need to get multiple tokens
});
- 编辑:错字
【问题讨论】:
-
您不能将
std::string传递给strtok。 -
那么究竟是什么你不知道该怎么做呢?创建一个元组?为元组中的元素赋值?将字符串转换为数字?也许澄清一点。这些事情都不是很难,它只是一次 3 件不同的事情。试着一次找出一个。
-
至于分隔标记,更c++的方法是创建一个
std::stringstream,然后在其上使用std::getline,它接受一个分隔符作为第二个参数。 -
这能回答你的问题吗? How do I tokenize a string in C++?
-
感谢您的输入,我现在可以制作令牌,但我真正的问题是如何将令牌解析为元组
?
标签: c++ string parsing lambda tuples