使用C++标准库实现文件的读取
2010-09-22 00:35
176 查看
实现将文件读取到一个字符串中,已用来输出,可以使用c++标准库。比如有以下文件
一开始尝试定义一个fstream对象fin进行输出的时候,但是会遇到碰到空格就停止的情况
std::fstream fin;
fin.open("test.txt",std::ifstream::in);
string strFile;
fin >> strFile;
std::cout << strFile << std::endl;
后来尝试定义格式状态noskipws,结果问题依旧
fin >> std::noskipws;
当然可以用getline循环读入每一行来获取文件的文本,但是这样好像麻烦了很多。后来搜索到两种很好的解决办法,一种是用我们的文件输入流定义输入流迭代器。然后直接用迭代器初始化字符串;另一种方法是用rdbuf函数重定义文件流到一个字符流,然后用这个字符流来初始化字符串。
具体的实现代码如下:详细解释参考注释部分
test.txt |
Hello world, ------------------------------ 这里是一个测试文件, 以测试使用c++ STL文件读取的情况 |
一开始尝试定义一个fstream对象fin进行输出的时候,但是会遇到碰到空格就停止的情况
std::fstream fin;
fin.open("test.txt",std::ifstream::in);
string strFile;
fin >> strFile;
std::cout << strFile << std::endl;
后来尝试定义格式状态noskipws,结果问题依旧
fin >> std::noskipws;
当然可以用getline循环读入每一行来获取文件的文本,但是这样好像麻烦了很多。后来搜索到两种很好的解决办法,一种是用我们的文件输入流定义输入流迭代器。然后直接用迭代器初始化字符串;另一种方法是用rdbuf函数重定义文件流到一个字符流,然后用这个字符流来初始化字符串。
具体的实现代码如下:详细解释参考注释部分
Main.cpp |
#include <iostream> #include <fstream> #include <sstream> #include <string> #include <iterator> using namespace std; //使用C++标准库实现文件的读取 int main() { //-------------------------------------------------------- //定义一个文件输入流对象 fstream fin; fin.open("test.txt",ifstream::in); if(!fin) { cerr << "test.txt打开失败!" << endl; return -1; } cout << "方法1:使用输入迭代器" << endl; fstream::fmtflags oldFlag = fin.flags(); fin >> noskipws; //忽视文件输入流中的空格; istream_iterator<char> itrBegin(fin),itrEnd;//定义一个输入迭代器 string strFile1(itrBegin,itrEnd); //使用两个迭代器作为参数构造string对象 cout << strFile1 << endl; fin.flags(oldFlag); //恢复文件流 //-------------------------------------------------------- fstream fin2; fin2.open("test.txt",ifstream::in); if(!fin2) { cerr << "test.txt打开失败!" << endl; return -1; } cout << "/n/n方法2:使用重定向流" << endl; ostringstream sout_temp; //定义一个字符流输出流对象 sout_temp << fin2.rdbuf(); //将文件流重定向至字符流 string strFile2(sout_temp.str()); cout << strFile2 << endl; return 0; } |
相关文章推荐
- C++类中包含string类型数据使用read和write实现文件读取和输出时遇到的问题
- 使用FileInputStream类, 实现从磁盘读取本应用程序源代码文件,并将文件内容显示在屏幕上。
- IE下使用控件实现读取本地文件功能并显示
- java里如何使用输入流和输出流实现读取本地文件里内容和写出到本地文件里
- 使用POI实现上传ecxel文件,并读取其中数据并存入数据库
- 使用文件操作函数实现简单的CP、cat、size功能及读取文件内容初始化结构体
- 实现经常使用的配置文件/初始化文件读取的一个C程序
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- 使用实现pandas读取csv文件指定的前几行
- 读取配置文件[方式二]之使用Awk实现
- java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
- cocos2d-实现读取.plist文件(使用数组CCArray)
- 使用NIO读取文件 Java实现案例
- 学习笔记之cocos2d-x2.1.1实现读取.plist文件(使用数组CCArray)
- Jmeter使用嵌套循环实现读取2个文件的参数来进行组合参数化
- 使用C#实现读取系统配置文件的代码实例讲解
- 使用BufferedInputStream来实现读取本地文件
- 使用libpng,libjpeg从文件读取和从内存读取2中方式的实现
- 使用js实现读取csv文件内容解析到html页面中
- 如何使用JavaScript实现纯前端读取和导出excel文件