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>的 然后给出来的编译信息 展开
现在想在头文件里面用主程序里面定义的一个东西(不知道该怎么叫了 失败) 不知道怎么用 高手们给解释一下 能详细点更好 非常感谢!
//*********************************
//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>的 然后给出来的编译信息 展开
4个回答
展开全部
楼上的没有包含文件流的头
这个编译信息我觉得楼主应该看出来才对
‘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执行是没问题的,
除了我上面提到的几个小问题
这个编译信息我觉得楼主应该看出来才对
‘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执行是没问题的,
除了我上面提到的几个小问题
展开全部
主程序可以从头文件里面引入,反过来是不行的.你把那个东西定义到头文件中去就可以引入了.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
//*********************************
//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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询