我是C ++的初学者。我有一个以下格式的输入文件(它以一个新的空行开头,然后是一串字符串(例如117b,44b,...,197f,f),这些逗号之间可能用逗号隔开,如下所示然后是2个线程(例如10、15),然后是一些函数调用):
”
117b,44b,19r,9b,6r,f,f,f,41b,21r,f,f,f,89r,72b,f,75r,f,f,96b,92r,f,f,101r ,f,f,146b,133b,126r,f,f,145r,f,f,186b,185r,f,f,197f,f
搜索线程:10
修改线程:15
插入(150)||插入(25)||插入(163)||删除(25)||删除(6)||搜索(101)||搜索(163)||搜索(6)
”
我想读取文件并将117b到f的字符串存储在字符串(或向量)数组中,以便该数组看起来像这样= [“ 117b”,“ 44b”,“ 19r”,... ,“ 197f”,“ f”]。然后我想将搜索线程的数量存储在一个int变量中,将修改线程的数量存储在另一个int变量中。我试图使用get line函数从文件中读取并按逗号分割,然后使用数组中的最后一个元素不会只是“ f”,因为它将继续读取,因为最后一个“ f”的末尾没有逗号。任何想法如何做到这一点?
答案 0 :(得分:0)
一旦不再有逗号分隔的标记可供读取,您可以使用对getline()
和std::stringstream
的调用来停止。
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
int main() {
std::string str = "117b,44b,19r,9b,6r,f,f,f,41b,21r,f,f,f,89r,72b,f,75r,f,f,96b,92r,f,f,101r,f,f,146b,133b,126r,f,f,145r,f,f,186b,185r,f,f,197f,f";
std::vector<std::string> tokens;
std::stringstream ss(str);
std::string token;
while (getline(ss, token, ',')) //delimit on comma
tokens.push_back(token);
for (std::size_t i = 0; i < vect.size(); i++)
std::cout << vect[i] << std::endl;
}