C++文件流操作的读与写

对文件的写入

put和<< 写入方式

  • put的操作:是对文件进行写入的操作,写入一个字符(可以使字母也可以是asci码值)
file.put(' A');
file.put('\n');
file << "xiezejing1994";

输出:     A// 注意到A这里有几个空格 但是不影响左对齐
xiezejing1994// 也就是说A的前面不会有空格

##操作和<< 读写方式区别

put操作和 file <<‘A’这个基本上是一样的,但是有个区别就是他不可以这样file <<’ A’;(A的前面有空格)因为他是格式化输入 所以中间不能有”空格“
但是这样file <<”‘ A”;(也就是以字符串的格式输入则会有空格)


文件的读操作

1.getline()

getline( cin ,string类型 )
getline( cin, z );
file1 << z; (file1 为文件流对象)


例子:
char c[100];
while ( !file.eof() )
{
file.getline( c,100 );
cout << c;
}
假设文件1.txt内有' A
xiezejing1994 这样文本
它的输出:' Axiezejing1994 也就是说他没有读到换行的功能
不会输出' A
xiezejing1994(原因就是getlibe其实里面有三个参数,第三个参数默认为'\n'

2.getline( fstream,string )

while ( getline( file,z ) )
{
cout << z;
}

3.get()

char c[100];
while ( !file.eof() )
{
//file.getline( c,100 ,'\0');
file.get( c,100 ,'\0');
cout << c;
}
输出同getline一样
----必须要写三个参数 否则只会输出一行(第三个参数为'\n'也是只会输出一行)。非常严格的输出。

4.get操作

char c;
file.get(c);
while ( !file.eof() )
{
cout << c;
file.get(c);
}
-----和getline的区别在于 他是读取单个字符的,所以会读取到结束符号
故会输出
' A
xiezejing1994

对文件是否读到末尾的判断

1.feof()

该函数只有“已经读取了”结束标志时 feof()才会返回非零值 也就是说当文件读取到文件结束标志位时他的返回值不是非零还是零 故还要在进行一次读.

例子 假设在1.txt中只有abc三个字符
在进行
while(!feof(fp))
{
ch = getc(fp);
putchar(ch);
}//实际上输出的是四个字符
改为
ch = getc(fp);
while ( !feof(fp))
{
putchar(ch);
ch = getc(fp);
}// 这样就可以正常运行
3. 可以不调用函数eof 直接就是
while ( file ) // file 就是文件流的对象
{
。。。。操作
}
4.
char c[100];
while ( !file.eof() )
{
file.getline( c,100 ,'\0');
cout << c;
}
这个 和
char c[100];
while ( !file.eof() )
{
file.getline( c,100 ,'\n');
cout << c;
}
假设文本为上面的。
输出分别为' A
xiezejing1994
' Axiezejing1994

读写

1.read( 数组名,接收的个数 )

2.write( 数组名,gcount函数 )

#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
ifstream file( "D:\\jjj.txt");
ofstream file1( "D:\\j.txt" , ios::app);
string z;
if ( !file )
{
cout << " 无法打开\n ";
return 1;
}
char c[100];
while ( !file.eof() )
{
file.read( c,100 );
file1.write( c, file.gcount() );
}
file.close();
file.close();
return 0;
}

**判断打开是否正确**

1. if( !file )
2.if ( !file.good() )
{
cout << " 无法打开\n ";
return 1;
}
3.
if ( !file.is_open() )
{
cout << " 无法打开\n ";
return 1;
}
4. if ( file.fail() )
{
cout << " 无法打开\n ";
return 1;
}
如果你感觉文章对你又些许感悟,你可以支持我!!
-------------本文结束感谢您的阅读-------------