C++从文件中读入一个字符的方法,高手指点!

最近做编译课程设计,要用C++语言,在C中读入一个字符的方法是fgetc(FILE*fp);但是用C++的文件流对象应该怎样操作呢?ifstreaminf("fname.... 最近做编译课程设计,要用C++语言,在C中读入一个字符的方法是
fgetc(FILE *fp);
但是用C++的文件流对象应该怎样操作呢?
ifstream inf("fname.txt");
char ch ;
inf >> ch ;
如果这样的话,文件中的"\t","\n"," "等字符读不到ch中;
或许用什么方法设置一下,能读进来?请高手指点呀!
不想用inf.getline()去读一行再处理.
展开
 我来答
wtgk_
2007-07-20
知道答主
回答量:16
采纳率:0%
帮助的人:8.2万
展开全部
呵,其实也可以一个字符一个字符地读,然后把读入的每个字符顺次存入ch[]数组中,如遇换行、空格或其它结束符则结束读取该字符串,则顺利取出一个字符。大概函数模型如下:

::fGetString(String ch[0],length,*fp)
{
char c = fgetc(*fp);
if (c!=' ')&&(c!='/t')&&(c!='/n')
{
//读取字符串入ch[0]
}
}

//其中lengtg为字符串长度,默认20即可。

呵呵,希望可以帮上你的忙

参考资料: 原创

百度网友752e9aa
推荐于2016-10-24 · TA获得超过208个赞
知道小有建树答主
回答量:290
采纳率:0%
帮助的人:203万
展开全部
我给你一个例子,从C:\temp.txt中读一个字符。
用了get()这个成员函数。
#include <fstream.h>
void main()
{
fstream ftemp;
ftemp.open("c:\\temp.txt",ios::in);
char ch;
ch=ftemp.get();
cout<<ch;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
贯真
2007-07-20 · TA获得超过2698个赞
知道大有可为答主
回答量:1022
采纳率:0%
帮助的人:1077万
展开全部
我有从一个文件中读入一个字符串,而且还能实现读出的字符串的比较问题的简单例子,供你参考:
const int Max=50;
char buff1[Max],buff2[Max];
const char*big,*small;
int i,j;
boolean ok=true;
while(!feof(fp1)&&!feof(fp2)){
fgets(buff1,Max-2,fp1);
fgets(buff2,Max-2,fp2);
if(strlen(buff1)>strlen(buff2)){
big=buff1;small=buff2;
}
else{big=buff2;small=buff1;}
while(*small++){
if(strchr(big,*small)==0){
ok=false;
break;//找不到这个字符
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友07187306e
2007-07-20 · TA获得超过464个赞
知道小有建树答主
回答量:681
采纳率:0%
帮助的人:0
展开全部
上面的可能都没法处理标识符。楼上的如果遇到标识符恐怕也不能处理。
一个带有标识符的字符串,我能想到的只有读出来以后改变储存方式(不用char[])
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dohogo
2007-07-20 · 超过10用户采纳过TA的回答
知道答主
回答量:45
采纳率:0%
帮助的人:0
展开全部
通过文件流读取数据
ifstream类代表读文件对象,所有的读操作都在这个类中。

read成员函数,用来读取数据到指定的buf中。
这个成员函数来至basic_istream类。
函数原型(来直MSDN文档)
basic_istream& read( char_type *_Str, streamsize _Count );
_Str 字符指针
_Count 要读取的字符数量

get成员函数,用来读取一个或多个字符
这个成员函数来至basic_istream类。
函数原型(来直MSDN文档)
int_type get( ); 读取一个字符,不过是作为int类型返回
basic_istream& get( char_type& _Ch ); 读取一个字符
basic_istream& get( char_type *_Str, streamsize _Count ); 读取指定数量的字符
basic_istream& get( char_type *_Str, streamsize _Count, char_type _Delim ); 读取指定数量的字符,但与到与_Delim相同的字符就停止
basic_istream& get( basic_streambuf<Elem, Tr> *_Strbuf );
basic_istream& get( basic_streambuf<Elem, Tr> *_Strbuf, char_type _Delim );

peek成员函数,用来返回下一个字符,当不从istream的buf中移出
这个成员函数来至basic_istreamlei。
函数原型(来至MSDN文档)
int_type peek( );

getline成员函数,用来读取一行数据
这个成员函数来至basic_istream类
函数原型(来至MSDN文档)
basic_istream& getline( char_type *_Str, streamsize _Count );
basic_istream& getline( char_type *_Str, streamsize _Count, char_type _Delim );

readsome成员函数,用于读取指定数量的数据到buf中
这个函数来至basic_istream类。
函数原型(来至MSDN文档)
streamsize readsome( char_type *_Str, streamsize _Count );

>>运算符重载
对C++基本类型进行了重载操作。可以直接读取这些数据。但会跳过控制字符。
用户可以扩展这个运算符操作的类型。
这个读取是有类型的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式