在做文本文件输入流的时候遇到的问题
txt的内容是这样的:我和我的家乡 - 宁浩 / 徐峥 / 陈思诚 / 闫非 / 彭大魔 / 邓超 / 俞白眉- 葛优 / 黄渤 / 范伟 / 邓超 / 沈腾 / 更多-剧情 / 喜剧
记得改txt文本文档的编码格式ANSI 不然输不出
输出之后是这样的
用到的就是文件流 和字符串流
首先用文件流存入一行数据,以字符串格式存入一个buffer中,再用适当操作从buffer中提取各个数据项
#include<iostream>
#include<fstream>
#include<sstream>
#include<string>
using namespace std;
struct MovieType
{
string movie_name;
string daractor_name;
char actor_name[30];
int duration; //时长
};
int main(){
MovieType movie;
//文件流
ifstream fin("output.txt");
string buffer;
getline(fin,buffer);//读取一行数据
// cout<<buffer;
//字符串流
istringstream sfin(buffer);//赋值给字符串流
/* while(getline(sfin,buffer,'-'))
cout<<buffer<<endl;//分别按照-分隔符输出 */
/* sfin>>movie.movie_name;
cout<<movie.movie_name;
sfin>>movie.daractor_name;
cout<<movie.daractor_name;
//默认是按照空格分隔输出*/
getline(sfin,movie.movie_name,'-');
cout<<movie.movie_name;
cout<<endl;
getline(sfin,movie.daractor_name,'-');
cout<<movie.daractor_name;//和第一种类似,只不过赋值给了结构体
fin.close();
return 0;
}
emmm好像也可以直接从文件流提取
int main(){
MovieType movie;
ifstream fin("output.txt");
getline(fin,movie.movie_name,'-');
cout<<movie.movie_name;
cout<<endl;
getline(fin,movie.daractor_name,'-');
cout<<movie.daractor_name;//OHHHOK
fin.close();
return 0;
}
输出结果同上