c++ 如何读取文件中的所有字符?

如何用c++读取某一文件里的所有字符,并保存至string.h里声明的一个字符串类string的一个成员里?大侠帮忙!!!急用!... 如何用c++读取某一文件里的所有字符,并保存至string.h里声明的一个字符串类string的一个成员里?

大侠帮忙!!!

急用!
展开
 我来答
泪之梦幻
推荐于2018-04-12 · TA获得超过2211个赞
知道小有建树答主
回答量:304
采纳率:100%
帮助的人:56.8万
展开全部

只需要在每次读取的时候判断是否为最后一个字符即可,和一般的读取文件方式并没有什么不同。

相比之C和其他几种主流编程语言,c++对于文件的读取操作是十分方便简单的。

在过程中有几个问题需要注意:

  1. 检查是否打开文件并且可以进行读取操作。

  2. 存放读取结果的变量是否足够大。

  3. 读取工作完成后需要关闭文件指针。

如下是针对要求编写的代码:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

const string GetFileName(void);
void ReadFile(const string strFileName);

int main(void)
{
    ReadFile(GetFileName());
    cout << endl;

    return 0;
}

const string GetFileName(void)
{
    string strFileName;
    cout.setf(ios::right);
    cout.width(30);
    cout << "输入文件的路径:";
    cin >> strFileName;

    return strFileName;
}

void ReadFile(const string strFileName)
{
    string text;

    ifstream in(strFileName.c_str());

    if (!in)
    {
        cout.width(15);
        cout << "文件打开失败" << endl;
    }

    while (in >> text)
    {
        cout << text;
    }

    in.close();
    in.clear();
}

高金山
推荐于2016-01-18 · TA获得超过1万个赞
知道大有可为答主
回答量:4101
采纳率:0%
帮助的人:1690万
展开全部
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int getFullFile(ifstream &ifs, string &str)
{
char currch;

str.erase();
while( !ifs.eof() )
{
ifs.get(currch);
if ( ifs.bad() )//there is an unrecoverable error.
return -1;
if (currch == '\0')
break;
else
str += currch;
}
return str.length();
}

int main()
{
ifstream tfile( "c:\\test.txt", ios::binary);
string abc("");

while ( !tfile.eof() )
{
if ( getFullFile(tfile, abc)
cout<<abc<<endl;
else
break;
abc.erase();
}
return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蒲弘虎元魁
2019-03-29 · TA获得超过1024个赞
知道小有建树答主
回答量:1688
采纳率:94%
帮助的人:7.7万
展开全部
比如说,文件的最后一个字符串是a
,
当你在循环体里面读入后,
文件指针
指在最后这个位置,但它还不是文件尾的标志EOF,
所以,此时while(!infile.eof())将顺利通过,只有当这一个进入循环体内再次读文件时,
才会读到EOF标志,此后infile.eof()才会为真
解决的办法:把判断放在循环体内,读文件之后,其他操作之前
if(!infile.eof())
break;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
SuperConfucius
2008-09-27
知道答主
回答量:18
采纳率:0%
帮助的人:0
展开全部
最简洁的做法是用ios::rdbuf():

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

bool getFileStr(string filename, string str)
{
ifstream src(filename.c_str());
if(src.is_open())
{
str = src.rdbuf().str();
src.close();
return true;
}

retrun false;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
rosslinhua
2008-09-26 · 超过12用户采纳过TA的回答
知道答主
回答量:39
采纳率:0%
帮助的人:0
展开全部
楼上的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式