8

我有以下格式的文件

1000 年 1 月 1 日星期一(TAB)你好(TAB)你好

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

所以样本输出可以是,

1000 年 1 月 1 日星期一

你好

你好吗

我不能使用fscanf(),因为它只读取到第一个空格。

4

2 回答 2

12

仅使用标准库设施:

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

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

std::string line;

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);
}

您可以在这里获得更多想法:如何在 C++ 中标记字符串?

于 2012-05-16T12:04:51.163 回答
5

从提升:

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

您可以在其中指定任何分隔符。

于 2012-05-16T11:01:07.737 回答