在d:\3.jpg是83,089 字节,我想把文件的18573字节起到最后读取出来保存到另一个文件D:\4.jpg,用下面的代码,运行后生成的文件竟然是33019 字节
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void main()
{
ifstream ifs;
ifs.open("D:\\3.jpg",ios::binary|ios::in);
ifs.seekg(18573,ios::beg);
string str;
while(!ifs.eof())
{
ifs>>str;
ofstream ofs;
ofs.open("D:\\4.jpg",ios::binary|ios::app);
ofs<<str;
}
cout<<"已经完成!\n";
}
这个怎么不行呢,不是代码编译不了,是分割出来的文件太小不一样
C++简单文件操作
答案:4 悬赏:40
解决时间 2021-04-09 05:02
- 提问者网友:她是我的お女人
- 2021-04-08 13:13
最佳答案
- 二级知识专家网友:而你却相形见绌
- 2021-04-08 13:20
二进制方式读写应该用read和write而不是<<和>>
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void main()
{
char ch;
ifstream ifs;
ifs.open("D:\\3.jpg",ios::binary|ios::in);
ofstream ofs;
ofs.open("D:\\4.jpg",ios::binary|ios::app);
ifs.seekg(sizeof(char)*18573,ios::beg);
while(!ifs.eof())
{
ifs.read((char *)&ch,sizeof(char));
ofs.write((char *)&ch,sizeof(char));
}
ofs.close();
ifs.close();
cout<<"已经完成!\n";
}
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void main()
{
char ch;
ifstream ifs;
ifs.open("D:\\3.jpg",ios::binary|ios::in);
ofstream ofs;
ofs.open("D:\\4.jpg",ios::binary|ios::app);
ifs.seekg(sizeof(char)*18573,ios::beg);
while(!ifs.eof())
{
ifs.read((char *)&ch,sizeof(char));
ofs.write((char *)&ch,sizeof(char));
}
ofs.close();
ifs.close();
cout<<"已经完成!\n";
}
全部回答
- 1楼网友:荒唐后生
- 2021-04-08 15:43
只有open没有close不行吧?
并且你这开open都在循环里头
肯定不行吧
- 2楼网友:恕我颓废
- 2021-04-08 15:02
注意这里里文件路径中的\要用\\
fin.open("c:\\story.txt");
fout.open("c:\\numstory.txt");
- 3楼网友:猎杀温柔
- 2021-04-08 13:49
我验证过了,其实你的程序在Visual Studio 2005下是正确的,但在VC6下不正确。
二进制方式读写也可以用<<和>>,但你的程序有堆栈溢出的风险,还有二进制操作请用低级字符类型char。
修改后代码如下:
void main()
{
ifstream ifs;
ofstream ofs;
char str;
ifs.open("D:\\3.jpg",ios::binary|ios::in);
ofs.open("D:\\4.jpg",ios::binary|ios::app);
ifs.seekg(18573,ios::beg);
while(!ifs.eof())
{
ifs>>str;
ofs<<str;
}
cout<<"已经完成!\n";
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |