VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
123
返回列表 发新帖
楼主: fcuptfwfn

文件输入输出问题

[复制链接]

0

主题

49

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-12-19 22:15:02 | 显示全部楼层
以上例子选自c++标准程序库第十三章第十节,楼主要全面了解stream和streambuf的关系可以看看这本书
回复

使用道具 举报

1

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
 楼主| 发表于 2020-12-20 09:15:01 | 显示全部楼层
可是有些书上说 fstream fio;是建立输入输出文件流对象,也就是可以用此对象进行输入输出操作啊~~~~?不理解—_—!
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-20 10:45:01 | 显示全部楼层
用fstream这样吧

#include <iostream>  
#include <fstream>  
using namespace std;  
int main()   
{  
    fstream myfile;  
    myfile.open("a.txt",ios::out|ios::app);  
    if(!myfile)  
    {  
        cout<<"文件错误!"<<endl;  
        system("pause");  
        exit(1);  
    }  
    myfile<<"new add "<<endl<<"网址;   
    myfile.close();                 //注意关闭
  
    myfile.open("a.txt",ios::in);  
    if(!myfile)  
    {  
        cout<<"文件读错误!"<<endl;  
        system("pause");  
        exit(1);  
    }  
    char ch;  
    while(myfile.get(ch))  
    {  
        cout.put(ch);  
    }  
    myfile.close();  
    system("pause");  
}
回复

使用道具 举报

0

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-20 11:00:02 | 显示全部楼层
你的问题跟我举的例子一样

记住加完关闭指针
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-20 11:15:01 | 显示全部楼层
是文件指针操作的问题:
#include<iostream>
//#include<conio.h>
#include<fstream>
using namespace std;

int main()
{
        fstream file("a.txt",ios::in|ios::out);
        string s1,s2;

        s1="abcd 1234\n";
        file<<s1; //将字符写进文件,同时文件指针也指向了文件尾
        file.seekg(ios_base::beg);//将文件指针重新移到文件头部
        file>>s2;
        cout<<"s2="<<s2<<endl;//s2为空

        file.close();
        //getch();
        return 0;
}

输出结果为:
s2=abcd //因为读取的不是按行读取,所以以空格区分
回复

使用道具 举报

1

主题

9

帖子

8.00

积分

新手上路

Rank: 1

积分
8.00
 楼主| 发表于 2020-12-21 02:00:01 | 显示全部楼层
感谢:fangjiehong、 firegun、 nimasile1
你们写的程序我都看懂了,但是我写的那个程序(是只定义fstream流的那个程序)编译运行都无误,但就是输不出s2(a.txt根本没被创建),与你们写的程序做了比较还是不知道为什么没有创建a.txt文本?能否帮我分析一下?谢谢~~~~~

nimasile1的那个程序写入文本时用了一个open(),写完close().读入变量时又一个open,然后再close().虽然目的达到了,但如果要在一个循环里反复读写,觉的不是很好。

firegun的程序很好,不过他没用到ifstream,用的是filebuf,ostream和istream。

liebersie 的那个程序与我几乎一样但我运行后还是没得到s2结果(输出为空,文本也没被创建),应该不会与编译器有关吧?
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-12-21 08:45:01 | 显示全部楼层
是完全一样吗?虽然只差一行,效果却不一样哦。
我在Linux下用g++编译和Windows下用VS编译都通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表