我有一个格式低于
的文件mon 01/01/1000(TAB)你好(TAB)你怎么样
有没有办法以单独使用'\t'
作为分隔符(而不是空格)的方式阅读文本?
因此,样本输出可以是
mon 01/01/1000
你好
你好吗
我无法使用fscanf()
,因为它只读到第一个空格。
答案 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"));
你可以在那里指定任何分隔符。