C++文件操作问题

一个主程序文件main.cpp里面用到了自定义的一个头文件l_f.h现在想在头文件里面用主程序里面定义的一个东西(不知道该怎么叫了失败)不知道怎么用高手们给解释一下能详细... 一个主程序文件main.cpp 里面用到了自定义的一个头文件l_f.h
现在想在头文件里面用主程序里面定义的一个东西(不知道该怎么叫了 失败) 不知道怎么用 高手们给解释一下 能详细点更好 非常感谢!
//*********************************
//main.cpp
//*********************************
#include<fstream>
#include<iostream>
#include"l_f.h"
using namespace std;

int main()
{
ifstream file_r; //定义一个文件流
file_r.open("/home/gutoo/t/tt.cpp");
if(!file_r)
{
cout<<"文件打开失败"<<endl;
return 0;
}
char ch;
ch = file_r.get();
char *ho;
ho = new char[10];
xx(ho,ch); //调用头文件里面的函数
cout<<ho<<endl;
return 0;
}

//****************************************
//l_f.h
//****************************************
#ifndef _L_F_H_
#define _L_F_H_
void xx(char *x, char y)
{
int i = 0;
for(i = 0; i < 5; i ++)
{
x[i] = y;
y = file_r.get(); //就是这里
//想让这个函数里面能用file_r该怎么传参数

}
}
#endif

//编译的出错信息
//In file included from main.cpp:6:
//l_f.h: In function ‘void xx(char*, char)’:
//l_f.h:12: error: ‘file_r’ was not declared in this scope
dede8385回答的有问题 我感觉你都没取运行一下
一下是照你说的改了以后的编译信息
In file included from main.cpp:6:
l_f.h:7: error: ‘ifstream’ has not been declared
l_f.h: In function ‘void xx(char*, char, int&)’:
l_f.h:13: error: request for member ‘get’ in ‘oo’, which is of non-class type ‘int’
main.cpp: In function ‘int main()’:
main.cpp:22: error: invalid initialization of reference of type ‘int&’ from expression of type ‘std::ifstream’
l_f.h:7: error: in passing argument 3 of ‘void xx(char*, char, int&)’

spaceshadows能详细点么 我主要要做的是 xx那个函数里面只用到几个get() 就是从文件里面读取几个字符 但是主程序需要一直读下去 所以定义在头文件里面是不是有点不合适阿

to giftbowen:
我编译的时候是在头文件里面自己加了#include<fstream>的 然后给出来的编译信息
展开
 我来答
百度网友bade6a1
2010-01-27 · TA获得超过692个赞
知道答主
回答量:86
采纳率:0%
帮助的人:95.9万
展开全部
楼上的没有包含文件流的头
这个编译信息我觉得楼主应该看出来才对
‘ifstream’ has not been declared - 未声明的符号
头文件修改如下
#ifndef _L_F_H_
#define _L_F_H_
#include <fstream>
using std::ifstream;

void xx(char *x, char y, ifstream &file_r)
{
int i = 0;
for(i = 0; i < 5; i ++)
{
x[i] = y;
y = file_r.get(); //就是这里
}
}
#endif

还有,cpp文件中
ho = new char[10];
new而没有delete
永远不要忘记delete

file_r open而没有close

!!!!!!!!!!!!!!!!!!!!!!!1
还没有解决么,你把我修改的头文件拷进去试试
你可能包含了头
不知道有没有using std::ifstream之类的
我用这个头文件和你的cpp执行是没问题的,
除了我上面提到的几个小问题
spaceshadows
2010-01-26 · 超过11用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:0
展开全部
主程序可以从头文件里面引入,反过来是不行的.你把那个东西定义到头文件中去就可以引入了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dede8385
2010-01-26 · TA获得超过213个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:156万
展开全部
file_r 的申明是在main()函数里面的,你怎么再头文件里面又用到了?而且void xx(char *x, char y)中,你得定义一个ifstream对象才能使用,再在这个函数的参数中增加一个ifstream的形参,在主函数中调用xx的时候和传x和y一样通过形参传过来才能使用‘file_r’。

//*********************************
//main.cpp
//*********************************
#include<fstream>
#include<iostream>
#include"l_f.h"
using namespace std;

int main()
{
ifstream file_r; //定义一个文件流
file_r.open("/home/gutoo/t/tt.cpp");
if(!file_r)
{
cout<<"文件打开失败"<<endl;
return 0;
}
char ch;
ch = file_r.get();
char *ho;
ho = new char[10];
xx(ho,ch,file_r); //调用头文件里面的函数
cout<<ho<<endl;
return 0;
}

//****************************************
//l_f.h
//****************************************
#ifndef _L_F_H_
#define _L_F_H_
void xx(char *x, char y, ifstream &file_r)
{
int i = 0;
for(i = 0; i < 5; i ++)
{
x[i] = y;
y = file_r.get(); //就是这里
//如果l_f.h和Main不在同一个文件还要加上能用的文件操作的头文件
}
}
#endif
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
voice2048
2018-06-01
知道答主
回答量:1
采纳率:0%
帮助的人:866
展开全部

使用一个引用

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式