日期: 2022-09-21 02:19:05 浏览数:5

上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
青岛网页设计-高端网站设计公司

while (!infile.eof())
{
infile >> data;
cout << data << endl;
outfile << data << endl;
}
按照 笔记1 中的输入,最后文件 copy 的结果应该是:
copy from test.txt to test_1.txt
John
20
20
为消除多与的读取、复制,我们只需要在还能读取文件数据的时候,才将数据复制到新文件中即可,即代码可以改成:
while (infile >> data)
{
cout << data << endl;
outfile << data << endl;
}
WillRious
WillRious
wil***ous@sina.com
4年前 (2018-05-30)
Smallink
282***0464@qq.com
9
关于 vs2010 头文件用 ifstream 和 ofstream 解决方法:
#include <fstream>
#include <iostream>
using namespace std;
int main(int argc, _TCHAR* argv[])
{
char data[50];
fstream file;
file.open("file.txt",ios::ate|ios::app);//打开文件进行写入操作 定位到文件末尾
cout<<"请输入你的姓名:"<<endl;
cin.getline(data,50);
file<<data<<endl;//往file.txt里写入
cout<<"请输入你的性别:"<<endl;
cin>>data;//重新定义数据
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)
如果在地址那里输入 bcdabcd 那么此时流里面剩的是 bcd ,此时 cin.ignore(); 吃掉的就是b了,这是流里还剩下 cd 直接交给 cin.getline(str3,30); 应为有个 所以这里 getline 就直接返回。
wupa
100***5122@qq.com
参考地址
wupa
100***5122@qq.com
对于 cin 的操作 使用 getline(cin,str)往往可以实现更加简单以及安全的字符串操作,不同于 cin.getline(char*, int a),前者可以直接对字符串进行操作。
#include<iostream>#include<string>#include<fstream>using namespace std;int main(){ fstream iofile; iofile.open("D: .txt", ios::out | ios::in | ios::trunc); string bookname; string bookwriter; cout << "input the bookname:" << endl; getline(cin, bookname); iofile << bookname << endl; cout << "input the bookwriter:" << endl; getline(cin, bookwriter); iofile << bookwriter << endl; iofile.close(); cout << "read the input file:" << endl; iofile.open("D: .txt"); while (getline(iofile, bookname)) { cout << bookname << endl; } system("pause"); return 0;}程序输入输出结果:
wupa
100***5122@qq.com
飞羽
187***3734@qq.com
简单文件输入输出
#include <fstream> #include <string>#include <iostream>#include <streambuf> using namespace std; int WriteFile(string filepath,const string& Init){ //定义文件输出流 ofstream outfile; //根据参数路径创建要输出的文件 outfile.open(filepath, ios::out | ios::trunc); if(!outfile) return 1; outfile << Init << endl; outfile.close(); return 0;}string Read_Str(string filepath){ ifstream infile; infile.open(filepath); //打开失败,路径不正确 if(!infile) cout << "Open File Fail!" << endl; //读取文本内容到字符串 string readStr((std::istreambuf_iterator<char>(infile)), std::istreambuf_iterator<char>()); return readStr;}int main(){ //执行完成在mian.cpp同一目录下生产C.txt文件 WriteFile("./C.txt","Hello , world!"); cout << Read_Str("./C.txt") << endl; getchar(); return 0;}在main.cpp同一目录下生成一个C.txt文件。屏幕显示输出结果
飞羽
187***3734@qq.com
WillRious
wil***ous@sina.com
关于 笔记1 中的复制操作。由于 eof 指示是在读取文件到结尾的时候,才会改变有效的状态。但是,再下一次没有读到数据的时候,eof 才会改变;
但是如果此时还是用 eof 标志位来判断文件是否读到了 end(下图while循环),就会导致此时的 infile>>data 语句还会流入数据(文件的最后一行数据),导致复制的文件中,会多出一行。