如何拆分文件行与空格和制表区别?

时间:2012-05-16 10:56:56

标签: c++ string split tabs whitespace

我有一个格式低于

的文件
  

mon 01/01/1000(TAB)你好(TAB)你怎么样

有没有办法以单独使用'\t'作为分隔符(而不是空格)的方式阅读文本?

因此,样本输出可以是

  

mon 01/01/1000

     

你好

     你好吗

我无法使用fscanf(),因为它只读到第一个空格。

2 个答案:

答案 0 :(得分:10)

仅使用标准库设施:

#include <sstream>
#include <fstream>
#include <string>
#include <vector>

std::ifstream file("file.txt");

std::string line;
std::string partial;

std::vector<std::string> tokens;

while(std::getline(file, line)) {     // '\n' is the default delimiter

    std::istringstream iss(line);
    std::string token;
    while(std::getline(iss, token, '\t'))   // but we can specify a different one
        tokens.push_back(token);
}

您可以在此处获得更多想法:How do I tokenize a string in C++?

答案 1 :(得分:5)

来自boost:

#include <boost/algorithm/string.hpp>
std::vector<std::string> strs;
boost::split(strs, "string to split", boost::is_any_of("\t"));

你可以在那里指定任何分隔符。