从输入文件C ++读取,以逗号分隔

时间:2019-12-05 06:29:01

标签: c++

我是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”的末尾没有逗号。任何想法如何做到这一点?

1 个答案:

答案 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;
}