c++ io 库将文件内容读入到vector对象

题目要求是这样的!将文件内容读入string类型的vector容器,每一行存储为该容器对象的一个元素。#include<iostream>#include<string>... 题目要求是这样的!将文件内容读入string类型的vector容器,每一行存储为该容器对象的一个元素。
#include<iostream>
#include<string>
#include<vector>
#include<fstream>
int filetovector(string filename,vector<string> &string_text)
{
//创建fstream对象绑定到由形参filename指定的文件中去
fstream input(filename.c-str());
if(!input) //打开文件失败
return 1;
string s;
while(getline(input,s)
string_text.push_back(s);
input.close(); //关闭文件
if(input.eof())
return 4;
if(input.bad())
return 3;
if(input.fail())
input 2;
}
using namespace std;
int main()
{
vector<string> string_text;
string filename,s;
cout<<"Enter file name(ctrl+z to end): "<<endl;
cin>>filename;
//处理文件
switch(filetovector(filename,string_text)
{
case 1:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 2:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 3:
cout<<"error:can not open file: \t"<<endl;
return -1;
}
vector<string>::iterator iter=string_text.begin();
while(iter!=string_text.end())
{
cout<<*iter<<endl;
++iter;
}
return 0;
}
程序是这样的,定义一个容器对象,再声明用于输入的文件名和输入内容为strig类型,提示用户输入同文件夹下的文件名,输入,调用函数,将实参传递给形参进行处理,创建一个fstring 流对象input绑定至文件名,当打开文件失败,结束,当成功打开,将流对象里面的内容存储至字面符类型对象s,再将s复制到容器里面,当文件遇到结束符,系统故障,输入错误就返回float至实参。这里什么意思啊,case 1: ??文件里面有1 2 3就为假。如果 我说错了请纠正,一定要细节分析到位,

在线等。
将每一行存储为该容器对象的一个元素,以及将每个单词存储为容器的一个元素:
while(input>>s)
while(getline(ipnut,s)为什么我写在程序里面没差别?
我输入一个文件名text.cpp,里面的元素是1stringshif 2kdsh sd3kjfh kd4shf kds
输出的是一行1stringshif 2kdsh sd3kjfh kd4shf kds,求速回答
展开
 我来答
感冒九十九
2012-08-15 · TA获得超过113个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:101万
展开全部
input>>s; 默认的结束符为空格;此时容器中有多个对象, while循环内执行多次;

getline默认的结束符为'\n'此时容器中只有一个对象;while循环内只执行一次;

楼主可以用size();成员函数看看结果
agole1989
2012-08-15 · 超过30用户采纳过TA的回答
知道答主
回答量:77
采纳率:0%
帮助的人:89.1万
展开全部
#include<iostream>
#include<string>
#include<vector>
#include<fstream>
#include<stdio.h>
using namespace std;
int filetovector(string filename,vector<string> &string_text)
{
//创建fstream对象绑定到由形参filename指定的文件中去
fstream input(filename.c_str());
if(!input) //打开文件失败
return 1;
char s[500];
while(input.getline(s,500))
string_text.push_back(s);
input.close(); //关闭文件
if(input.eof())
return 4;
if(input.bad())
return 3;
if(input.fail())
return 2;
}
int main()
{
vector<string> string_text;
string filename;
string s;
cout<<"Enter file name(ctrl+z to end): "<<endl;
cin >> filename;
switch(filetovector(filename,string_text))
{
case 1:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 2:
cout<<"error:can not open file: \t"<<endl;
return -1;
case 3:
cout<<"error:can not open file: \t"<<endl;
return -1;
}
vector<string>::iterator iter=string_text.begin();
while(iter!=string_text.end())
{
cout<<*iter<<endl;
++iter;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式