本文目录
- c++中,ifstream怎么实现拷贝复制
- 关于文件流操作 ifstream
- ifstream 以二进制打开 而以文本打开有什么区别
- 怎么使用ifstream读取文件
- c++ ifstream函数的使用
- C++中,ifstream和ofstream定义文件流的区别
- ifstream的用法
- 在头文件中使用ifstream时提示未声明的标识符,已包含相应文件
c++中,ifstream怎么实现拷贝复制
使用C++标准程序库的输入输出流(I/O Stream)复制文件,存在许多的方法, 方法一:逐个字符复制#include 《 fstream 》 std::ifstream input(“in“,ios::binary); std::ofstream output(“out“,ios::binary); char ch; while (input.get(ch)) output 《《 ch;注意:如果使用input》》ch读取字符,则必须先调用input.unsetf(ios::skipws)取消输入流默认的跳过空白符的输入格式,因为换行符是空白符的一种。 方法二:逐行复制#include 《 fstream 》 #include 《 string 》 std::ifstream input(“in“,ios::binary); std::ofstream output(“out“,ios::binary); std::string line; while (getline(input,line)) output 《《 line 《《 “\n“;注意:这里的代码有一个小小的缺陷,如果文件不是纯文本格式的文件,或者文本文件的最后没有换行符,那么会导致复制后的文件末尾添加了一个多余的换行符。 方法三:迭代器复制#include 《 fstream 》 #include 《 iterator 》 #include 《 algorithm 》 std::ifstream input(“in“,ios::binary); std::ofstream output(“out“,ios::binary); input.unsetf(ios::skipws); copy(istream_iterator(input),istream_iterator(),ostream_iterator(output,““));同样这里也有一个小技巧,输入流的格式默认为跳过空白字符,因此调用unsetf取消这个格式,才可保证正确的复制。 方法四:缓冲区复制#include 《 fstream 》 std::ifstream input(“in“,ios::binary); std::ofstream output(“out“,ios::binary); output 《《 input.rdbuf();这里直接使用了输入流的缓冲区,因此没有引入额外的临时对象。 很显然,上述四种方法中,最后一种方法最简洁,由于直接操作输入流的缓冲区,从运行效率上来说,也比其他方法有着略微的优势(当然,由于操作系统可能提供了额外的基于设备的文件缓冲机制,也许你无法证实这一点)。因此,除非要对输入内容进行处理,直接复制文件推荐最后一种方法,既不容易出错,又能获得良好的性能。 以上是搜索的资料,希望对你有帮助
关于文件流操作 ifstream
经实际测试,可以读到拉进去的文件。
#include 《iostream》#include 《fstream》#include 《string》using namespace std;int main(){char filename;cout《《“请将文件拖到此处“《《endl;cin.getline(filename,1000,’\n’);ifstream datafile;datafile.open(filename);if(!datafile){cout《《“文件打开失败“《《endl;return 0;}string s;datafile》》s;cout《《s《《endl;return 0;}
最终读取了文件内容,并输出了读取到的字符串。
ifstream 以二进制打开 而以文本打开有什么区别
ifstream以二进制打开而以文本打开有什么区别?#include《iostream》#include《iostream》#include《fstream》usingnamespacestd;intmain(){ofstreamotxt(“d:\\txt“);ofstreamobin(“d:\\bin“,ios::binary);unsignedintc;for(c=0;c《256;c++){otxt《《(char)c;obin《《(char)c;if((c+1)%10==0){/*写文件有文本格式和二进制格式之分,ios::binary就是二进制它与文本格式的差别在于,文本格式会增加一些格式上的信息,比如换行’\n’用文本输出是两个字节0x0Ah,0x0Dh,而如用二进制输出则是0x0Ah故而txt的字节数》bin的字节数*/otxt《《’\n’;obin《《’\n’;}}otxt.close();obin.close();ifstreamitxt(“d:\\txt“,ios::binary);ifstreamibin(“d:\\bin“);//读文件时最大的区别:文本方式在遇到第一个EOF字符(ASCII:26)时就结束,二进制方式直到文件结尾。charch;cout《《“txtasbinary:“《《endl;while(itxt.get(ch)){cout《《ch《《“[“《《(int)ch《《“]“;}cout《《’\n’《《endl;cout《《“binastext:“《《endl;while(ibin.get(ch)){cout《《ch《《“[“《《(int)ch《《“]“;}cout《《endl;itxt.close();ibin.close();return0;}文本文件本身跟二进制文件一样,都是由0/1位组成,只是一般所说的文本文件每8位(一字节)必须是可显示的ASCII码范围(0~127),而二进制每8位任意(0~255)。写文件有文本格式和二进制格式之分,ios::binary就是二进制,它与文本格式的差别在于,文本格式会增加一些格式上的信息,比如换行’\n’用文本输出是两个字节0x0Ah,0x0Dh.而如用二进制输出则是0x0Ah.而读文件时最大的区别:文本方式在遇到第一个EOF字符(ASCII:26)时就结束,二进制方式直到文件结尾。
怎么使用ifstream读取文件
#include 《iostream》#include 《fstream》#include 《string》using namespace std;//输出空行void OutPutAnEmptyLine(){ cout《《“\n“;}//读取方式: 逐词读取, 词之间用空格区分//read data from the file, Word By Word//when used in this manner, we’ll get space-delimited bits of text from the file//but all of the whitespace that separated words (including newlines) was lost. void ReadDataFromFileWBW(){ ifstream fin(“data.txt“); string s; while( fin 》》 s ) { cout 《《 “Read from file: “ 《《 s 《《 endl; }}//读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换行区分//If we were interested in preserving whitespace, //we could read the file in Line-By-Line using the I/O getline() function.void ReadDataFromFileLBLIntoCharArray(){ ifstream fin(“data.txt“); const int LINE_LENGTH = 100; char str[LINE_LENGTH]; while( fin.getline(str,LINE_LENGTH) ) { cout 《《 “Read from file: “ 《《 str 《《 endl; }}//读取方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分//If you want to avoid reading into character arrays, //you can use the C++ string getline() function to read lines into stringsvoid ReadDataFromFileLBLIntoString(){ ifstream fin(“data.txt“); string s; while( getline(fin,s) ) { cout 《《 “Read from file: “ 《《 s 《《 endl; }}//带错误检测的读取方式//Simply evaluating an I/O object in a boolean context will return false //if any errors have occurredvoid ReadDataWithErrChecking(){ string filename = “dataFUNNY.txt“; ifstream fin( filename.c_str()); if( !fin ) { cout 《《 “Error opening “ 《《 filename 《《 “ for input“ 《《 endl; exit(-1); }}int main(){ ReadDataFromFileWBW(); //逐词读入字符串 OutPutAnEmptyLine(); //输出空行 ReadDataFromFileLBLIntoCharArray(); //逐词读入字符数组 OutPutAnEmptyLine(); //输出空行 ReadDataFromFileLBLIntoString(); //逐词读入字符串 OutPutAnEmptyLine(); //输出空行 ReadDataWithErrChecking(); //带检测的读取 return 0;}
c++ ifstream函数的使用
string 是stl里的模板,是为了方便字符串操作,当然不能传,可以用char数组, #include《iostream》#include《fstream》using namespace std;char a;{ while(true) { cin 》》 a; ifstream fin(a); long temp; fin 》》 temp; fin.close(); }}手机,没编译,有错请讲
C++中,ifstream和ofstream定义文件流的区别
区别一:本质不一样
1、ofstream是从内存到硬盘;
2、ifstream是从硬盘到内存
区别二:实际应用不同
1、 ifstream默认以输入方式打开文件
2、ofstream默认以输出方式打开文件
扩展资料
1、C++对文件的输入输出操作需要用ifstream、ofstream和fstream类。
2、ifstream类支持文件的输入,ofstream类支持文件的输出操作,fstream类支持文件的输入输出操作,它们的定义在头文件《fstream》中。
3、C++将字符串也理解为一种输入输出设备,因此,也可以向终端设备和文件那样将数据输入输出到字符串中。
c++中输出和输入导屏幕和键盘的类别声明包含再标题文件《iostrream.h》中,而磁盘类文件的 I/O则声明再包含标题文件《fstream.h》内。
输入和输出格式:
输出到磁盘 ofsteam 识别字(“文件名”)
从磁盘读文件 ifsteam 识别字(“文件名“)
例如:
ofstream outfile(“data.txt“); //写入到磁盘的data.txt中
ifstream的用法
#include 《iostream》#include 《fstream》#include 《string》using namespace std;static char ch; main(){ ifstream infile(filename,ios::in); if(!infile) { cout《《“open error!“《《endl; exit(1); } infile.get(ch); cout.put(ch); cout《《endl; system(“pause“); }这个你在把filename改成一个具体的文件名就行了...
在头文件中使用ifstream时提示未声明的标识符,已包含相应文件
ifstream 是在 fstream 头文件中,所以要包含 fstream 头文件,并且 引用 std 命令空间。
在文件头部添加下面两句:
#include 《fstream》using namespace std;