这个问题已经在这里有一个答案:
- 如何记号化在C ++字符串? 35个回答
我有以下格式的文件
星期一1000年1月1日(TAB)喜打招呼(TAB)怎么R您
有没有办法读取这种文本使用方式'\t'
单独作为分隔符(而不是空间)?
因此,样本输出就可以了,
周一1000年1月1日
你好
你好吗
我不能使用fscanf()
,因为它读取,直到只有第一个空间。
这个问题已经在这里有一个答案:
我有以下格式的文件
星期一1000年1月1日(TAB)喜打招呼(TAB)怎么R您
有没有办法读取这种文本使用方式'\t'
单独作为分隔符(而不是空间)?
因此,样本输出就可以了,
周一1000年1月1日
你好
你好吗
我不能使用fscanf()
,因为它读取,直到只有第一个空间。
只使用标准库:
#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);
}
你可以在这里得到一些更多的想法: 我如何记号化在C ++字符串?
从boost:
#include <boost/algorithm/string.hpp>
std::vector<std::string> strs;
boost::split(strs, "string to split", boost::is_any_of("\t"));
你可以在那里指定任何分隔符。