当数据包含空格时,如何将制表符分隔文件的内容加载到C ++中的字符串2D向量中?

时间:2014-12-10 17:11:36

标签: c++ string text-files stdvector

我有以下代码将选项卡分隔文件的内容加载到字符串的2D矢量中。问题是如果数据中有任何空间,这就是代码失败。如何修改代码以将其考虑在内。

const std::size_t columns = 4;
std::string word;
std::size_t count = 0;
std::ifstream in("some_file");
std::vector<std::vector<std::string>> data;
std::vector<std::string> row;
while(in >> word) {
    row.push_back(std::move(word));
    if(++count % columns == 0) {
        data.push_back(std::move(row));
        row.clear();
    }
}

1 个答案:

答案 0 :(得分:2)

使用std :: getline获取整行,然后根据制表符分隔符将该行拆分为单独的字符串。像这样:

#include <sstream>

std::string line;
std::vector<std::vector<std::string>> data;

while(std::getline(in, line)) {
    std::string phrase;
    std::vector<std::string> row;
    std::stringstream ss(line);
    while(std::getline(ss, phrase, '\t')) {
        row.push_back(std::move(phrase));
    }
    data.push_back(std::move(row));
}