码迷,mamicode.com
首页 > 编程语言 > 详细

C++ 关于文件读取和输入的问题

时间:2020-02-26 17:14:28      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:++   eal   输入   bsp   文本   文件读取   win   头文件   out   

主要针对于机试中的IO读写问题,c语言实现和使用太过于繁琐,所以以后遇到类似题目还是用C++的;

 

主要包含头文件

#include<iostream>
#include<fstream>
#include<sstream>

 

 

一般来说,用fstream就足够够用了,他包含了istream和ostream的有点,可以直接对一个流同时进行读写;

fstream的创建和初始化如下所示:

fstream fin;
fin.open("C:\\Users\\Reality\\Desktop\\iotest\\testcpp.txt", ios::in);

 

注意一下,win系统下所有的格式采用“//”来对路径分隔符就行转义,最好使用绝对路径,方便;

 

使用open(path,ios::)进行初始化,第一个参数使打开文件的完整路径,第二个参数则是打开文件的详细方式;

具体的ios::打开类型如下所示:

技术图片

 

 简便来说:

fstream读取用ios::in,输出用ios::out,如果在已有文件后进行输出则用ios::app。但是一定一定要注意,这些是针对于文本文件;

当针对于二进制文件的时候,打开文件则使用ios::binary。

 

这里再补充一下二进制文件和文本文件的问题:

两个在内存中的表现形式和在外存上的存储形式不一样。

尽管文件都是01二进制流构成的,但是二进制文件使可以执行的机器文件,内容就是二进制数字;

而文本文件则还需要进行ASCII码翻译过程,才能翻译成完整的文本文件。cpp/txt/html都是文本类型文件,如果使用IOS::binary进行二进制打开,则必读取失败。注意.o和.cpp文件的区别;


当使用fin.open后,最好进行是否打开文件成功的判断。

if (!fin) {
    cout << "Open Failure" << endl;
    return 0;
}

 

直接对fin进行判断即可,当然也可以使用!fin.good()进行判断;

 

在读取和写入文件时,和cin、cout输入输出流类似,直接输入输出;

 

值得注意的是读入操作:

和cin的读入操作类似,当cin>>s时,s的类型也可以为字符串也可以为数值类型,且都是空格或者换行结尾;

当想读入整行字符串的时候,用getline(fin,s)即可,后续就是字符串的相关处理,又是老生常谈的问题;

 

还有,一定要记住在使用完文件进行关闭操作;

fin.close();

 

来进行文件的关闭,以免出错或者打开文件再次有问题;

 

C++ 关于文件读取和输入的问题

标签:++   eal   输入   bsp   文本   文件读取   win   头文件   out   

原文地址:https://www.cnblogs.com/songlinxuan/p/12367630.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!