C++fstream流怎么判断是否真的到了文件结尾.在线等
#include"stdafx.h"#include"iostream"#include"fstream"#include"string"#include<vector>...
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
#include <vector>
using namespace std;
bool IsChinese(const unsigned char High,const unsigned char Low);
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in("D:\\MycomDlg.cpp");
vector<string> V;//容器
string line;
unsigned int Num=0;
while(getline(in,line))//逐行存入容器
{
V.push_back(line);
for(unsigned int n=0;n<line.length();n++)
{
if(n<line.length()-1)
{
if(IsChinese(line[n],line[n+1]))
{
Num++;
n++;//判断为中文则多下移一次
}
}
}
}
for(int m=0;m<V.size();m++)
{
cout<<V[m]<<endl;
}
cout<<Num<<endl;
return 0;
}
bool IsChinese(const unsigned char High,const unsigned char Low)
{
/*函数仅适合GB2312编码下的汉字
判断,同时中文符号(包括标点)不
在判断之内.*/
if((High>=0xB0&&High<=0xF7)&&(Low>=0xA1&&Low<=0xFE))//根据GB2312编码规则
return true;
else
return false;
}
用这个程序判断文件中有多少汉字,但是当我把ASSIC表复制到要打开的文件中进行测试的时候发现while(getline(in,line))//逐行存入容器不读取26号文件结尾符了.求解决方法. 展开
#include "iostream"
#include "fstream"
#include "string"
#include <vector>
using namespace std;
bool IsChinese(const unsigned char High,const unsigned char Low);
int _tmain(int argc, _TCHAR* argv[])
{
ifstream in("D:\\MycomDlg.cpp");
vector<string> V;//容器
string line;
unsigned int Num=0;
while(getline(in,line))//逐行存入容器
{
V.push_back(line);
for(unsigned int n=0;n<line.length();n++)
{
if(n<line.length()-1)
{
if(IsChinese(line[n],line[n+1]))
{
Num++;
n++;//判断为中文则多下移一次
}
}
}
}
for(int m=0;m<V.size();m++)
{
cout<<V[m]<<endl;
}
cout<<Num<<endl;
return 0;
}
bool IsChinese(const unsigned char High,const unsigned char Low)
{
/*函数仅适合GB2312编码下的汉字
判断,同时中文符号(包括标点)不
在判断之内.*/
if((High>=0xB0&&High<=0xF7)&&(Low>=0xA1&&Low<=0xFE))//根据GB2312编码规则
return true;
else
return false;
}
用这个程序判断文件中有多少汉字,但是当我把ASSIC表复制到要打开的文件中进行测试的时候发现while(getline(in,line))//逐行存入容器不读取26号文件结尾符了.求解决方法. 展开
3个回答
展开全部
参考这个
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ofstream fcout("a.txt");
fcout<<"fsfd ag\n";
fcout.close();
ifstream fin("a.txt");
if(fin.good())
{
cout<<"打开成功\n";
char ch;
while(!fin.eof()) //这里
{
ch=fin.get();
cout<<ch;
}
}
fin.close();
fin.open("b.txt");
if(fin.fail())
cout<<"打开失败\n";
fin.close();
return 0;
}
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
ofstream fcout("a.txt");
fcout<<"fsfd ag\n";
fcout.close();
ifstream fin("a.txt");
if(fin.good())
{
cout<<"打开成功\n";
char ch;
while(!fin.eof()) //这里
{
ch=fin.get();
cout<<ch;
}
}
fin.close();
fin.open("b.txt");
if(fin.fail())
cout<<"打开失败\n";
fin.close();
return 0;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
char buf[1024]; //临时保存读取出来的文件内容
ifstream infile;
infile.open(m_strFilePath);
if(infile.is_open()) //文件打开成功,说明曾经写入过东西
{
while(infile.good() && !infile.eof())
{
memset(buf,0,1024);
infile.getline(buf,1204);
m_Buffer +=buf;
}
infile.close();
}
else
{
AfxMessageBox("文件打开失败");
}
参考这段代码。
ifstream infile;
infile.open(m_strFilePath);
if(infile.is_open()) //文件打开成功,说明曾经写入过东西
{
while(infile.good() && !infile.eof())
{
memset(buf,0,1024);
infile.getline(buf,1204);
m_Buffer +=buf;
}
infile.close();
}
else
{
AfxMessageBox("文件打开失败");
}
参考这段代码。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询