ofstream输出文件的格式问题?(C++)

ofqian 2003-10-29 09:56:40
ifstream读进一个文件,
(例如文件格式是这样:

今天


好天气

)
如何保证该文件内容,输出到另一个文件中后,文件内容的格式不变?
...全文
514 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
victorforever 2003-10-30
  • 打赏
  • 举报
回复
用infstream 读进文件,
然后用getline依次取出
即可.
ifstream infile("inflie");
ofstream outfile("outfile");
vector<string> text;
char p[100];
while(infile.getline(p,100)){
text.push_back(p);
}
vector<string>::iterator iter;
iter = text.begin();
for(iter;iter!=text.end();++iter){
outfile <<*iter << endl;
}
ofqian 2003-10-30
  • 打赏
  • 举报
回复
up
ofqian 2003-10-29
  • 打赏
  • 举报
回复
关键是如何保持空格仍然保持不变.
在中间还要把输入的文件流赋给一个vector去遍历.
换言之就是,怎样读进来,就怎样写出去?
谢谢上面兄弟的回答,
哪位兄弟,写过类似的东东,贴代码让俺学习一下.
ofqian 2003-10-29
  • 打赏
  • 举报
回复
关键是如何保持空格仍然保持不变.
换言之就是,怎样读进来,就怎样写出去?
neptunez 2003-10-29
  • 打赏
  • 举报
回复
good
langzi8818 2003-10-29
  • 打赏
  • 举报
回复
#include < fstream >


std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);
char ch;


while (input.get(ch)) output << ch;

方法二:逐行复制

#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,""));

方法四:缓冲区复制

#include < fstream >


std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);


output << input.rdbuf();

这里直接使用了输入流的缓冲区,因此没有引入额外的临时对象。

很显然,上述四种方法中,最后一种方法最简洁,由于直接操作输入流的缓冲区,从运行效率上来说,也比其他方法有着略微的优势(当然,由于操作系统可能提供了额外的基于设备的文件缓冲机制,也许你无法证实这一点)。因此,除非要对输入内容进行处理,直接复制文件推荐最后一种方法,既不容易出错,又能获得良好的性能。
daizh 2003-10-29
  • 打赏
  • 举报
回复
这个问题不是回答过了吗?怎么又提出来问啦。

方法一:逐个字符复制

#include < fstream >


std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);
char ch;


while (input.get(ch)) output << ch;

方法二:逐行复制

#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,""));

方法四:缓冲区复制

#include < fstream >


std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);


output << input.rdbuf();

这里直接使用了输入流的缓冲区,因此没有引入额外的临时对象。

很显然,上述四种方法中,最后一种方法最简洁,由于直接操作输入流的缓冲区,从运行效率上来说,也比其他方法有着略微的优势(当然,由于操作系统可能提供了额外的基于设备的文件缓冲机制,也许你无法证实这一点)。因此,除非要对输入内容进行处理,直接复制文件推荐最后一种方法,既不容易出错,又能获得良好的性能。

ch_etang 2003-10-29
  • 打赏
  • 举报
回复
#include <fstream>


std::ifstream input("in",ios::binary);
std::ofstream output("out",ios::binary);


output << input.rdbuf();

收工,得分。
fwinfwin 2003-10-29
  • 打赏
  • 举报
回复
原样输出吧,读什么就输出什么,不要用readline读就可以了
如果用readline读的就要加一个endl在输出每行的尾部就可以了

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧