C++ 用string读一个txt文件,文件的里的内容用tab,回车或者空格隔开。

如:内容一tab内容二空格内容三回车内容四,希望在读取的时候,只有tab和回车起到分割内容的作用,而把空格看做内容本身,不起作用。也就是希望file>>string的时候... 如:内容一tab内容二空格内容三回车内容四,希望在读取的时候,只有tab和回车起到分割内容的作用,而把空格看做内容本身,不起作用。也就是希望file>>string的时候,能够获得内容一,内容二 内容三,内容四。怎么实现? 展开
 我来答
splashchaos
推荐于2017-12-16 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3664万
展开全部
方法很多,
① 可以c的函数strtok,可以一次搞定;问题是这个函数需要拷贝原字符串,因为它要破坏字符串,如果文本文件大,效率就会低; 而且是线程不安全的。
② 可以使用boost::tokenizer, 很方便, 不过需要按照第3方的boost库;
③ 也可以用pcre的正则库, 也很好用;
④ 自己写一个, string, STL的; 下面是用stringstream的一个实现,结合了std:getline()。因为你这个例子,其实回车是getline自动考虑了, 只要定义“\t”(tab制表符)即可。
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

int main()
{
ifstream ifs("data.txt");
string str((std::istreambuf_iterator<char>(ifs)), std::istreambuf_iterator<char>());
//cout << str.c_str() << endl;

stringstream ss(str);
string s;
while (getline (ss,s,'\t'))
{
cout << s << endl;
}
return 0;
}
注意: 这个文件的字符是char, 如果是unicode的文件, 用wchar_t替换char。
追问
谢谢!这个文件是UTF-8编码的,很多符号都判断不出来。这个应该怎么办呢?
追答
不就是tab和回车吗? 还有其他的字符?
蒙慕随以彤
2020-04-15 · TA获得超过3710个赞
知道大有可为答主
回答量:2987
采纳率:25%
帮助的人:425万
展开全部
你好!
记得有个函数是按行读取
然后可以设置分隔符的那种。。。。忘记了
希望对你有所帮助,望采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小刺猬001
2012-10-19 · TA获得超过729个赞
知道小有建树答主
回答量:1087
采纳率:73%
帮助的人:282万
展开全部
记得有个函数是按行读取 然后可以设置分隔符的那种。。。。忘记了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式