社区
Linux/Unix社区
帖子详情
ifstream在UNIX中的路径问题
wbkunt
2007-05-12 02:05:52
我定义了一个输入流
string Buf="/home4/test.txt";
ifstream ITEST(Buf.txt,ios::in);
if(!ITEST)
{
cerr<<"Fail to open "<<Buf<<endl;
return -1;
}
高手看看有什么问题不
Windows下面写的,成功了
搬到Unix下面就不行了 真是郁闷啊
也请高手说说在Unix下面写C++程序有什么特殊的地方?
谢谢
...全文
291
12
打赏
收藏
ifstream在UNIX中的路径问题
我定义了一个输入流 string Buf="/home4/test.txt"; ifstream ITEST(Buf.txt,ios::in); if(!ITEST) { cerr<<"Fail to open "<<Buf<<endl; return -1; } 高手看看有什么问题不 Windows下面写的,成功了 搬到Unix下面就不行了 真是郁闷啊 也请高手说说在Unix下面写C++程序有什么特殊的地方? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
VCLIFE
2007-05-12
打赏
举报
回复
ios::不行那就换ios_base::试
wbkunt
2007-05-12
打赏
举报
回复
运行结果:
/home4/zhwhuang/jt/count/cycledir.dir
/home4/zhwhuang/jt/count/cycledir.dir
/home4/zhwhuang/jt/count/23.dir /home4/zhwhuang/jt/count/23.dir
/home4/zhwhuang/jt/count/23.dir
/home4/zhwhuang/jt/count/23.dir
Fail to open /home4/zhwhuang/jt/count/23.dir
shit
wbkunt
2007-05-12
打赏
举报
回复
我干脆把代码贴出来吧 ,终于要贴一回代码了 汗ing
我是菜鸟!
其中有些是我用错调试的语句 我也把结果给贴出来,
谢谢了。
头文件:count.h
#ifndef _COUNT_H
#define _COUNT_H
#include <fstream>
#include <string>
#include <iostream>
using namespace std;
const int CycleNum=3;
const int PassNum=5;
typedef struct tagPASSFILE
{
string name;
int count;
}PASSFILE;
typedef struct tagPASSDIRSTR
{
string passdirstr;
PASSFILE passfile[PassNum];
}PASSDIRSTR;
#endif
源文件:count.cpp
#include "count.h"
int main()
{
string CycleDirStr="/home4/zhwhuang/jt/count/cycledir.dir";
PASSDIRSTR PassDir[CycleNum];
cout<<CycleDirStr<<endl<<CycleDirStr.c_str()<<endl;
ifstream ICYCLEDIR;
ICYCLEDIR.open(CycleDirStr.c_str(),ios::in);
if(!ICYCLEDIR)
{
cerr<<"Fail to open "<<CycleDirStr<<endl;
return -1;
}
string Buf="/home4/zhwhuang/jt/count/23.dir";
cout<<Buf<<" "<<Buf.c_str()<<endl;
ifstream ITEST;
ITEST.open(Buf.c_str(),ios::in);
if(!ITEST)
{
cerr<<"Fail to open "<<Buf<<endl;
return -1;
}
int k;
for(k=0;k!=PassNum;++k)
{
getline(ITEST,Buf,'\n');
cout<<Buf<<endl;
}
ofstream OPASSDIR;
OPASSDIR.open("/home4/zhwhuang/jt/count/RefTrack.dir",ios::app);
if(!OPASSDIR)
{
cerr<<"Fail to open RecTrack.dir"<<endl;
return -1;
}
// OPASSDIR<<1<<endl<<2<<endl<<3<<endl;
// ofstream outfile("out.txt",ios::app);
int i,j;
string szBuf;
int Max;
int index;
ifstream IPASSDIR;
ifstream IPASSFILE;
for (i=0;i!=CycleNum;++i)
{
//cout<<"before:"<<PassDir[0].passfile[0].name<<endl;
getline(ICYCLEDIR,PassDir[i].passdirstr,'\n');
cout<<PassDir[i].passdirstr<<endl<<(PassDir[i].passdirstr).c_str()<<endl;
IPASSDIR.open((PassDir[i].passdirstr).c_str(),ios::in);
if(IPASSDIR.fail())
{
cerr<<"Fail to open "<<PassDir[i].passdirstr<<endl;
cerr<<"shit"<<endl;
return -1;
}
//cout<<PassDir[i].passdirstr<<endl;
for (j=0;j!=PassNum;++j)
{
getline(IPASSDIR,PassDir[i].passfile[j].name,'\n');
//cout<<PassDir[i].passfile[j].name<<endl;
PassDir[i].passfile[j].count=0;
cout<<PassDir[i].passfile[j].name<<endl;
IPASSFILE.open((PassDir[i].passfile[j].name).c_str(),ios::in);
if(!IPASSFILE)
{
cerr<<"Fail to open "<<PassDir[i].passfile[j].name<<endl;
cerr<<"damn"<<endl;
return -1;
}
do
{
getline(IPASSFILE,szBuf,'\n');
//outfile<<szBuf<<endl;
PassDir[i].passfile[j].count=PassDir[i].passfile[j].count+1;
} while(!IPASSFILE.eof());
PassDir[i].passfile[j].count=PassDir[i].passfile[j].count-1;
//outfile<<endl<<"**"<<PassDir[i].passfile[j].count<<endl;
}
}
for (j=0;j!=PassNum;++j)
{
Max=0;
index=-1;
for (i=0;i!=CycleNum;++i)
{
if (Max<PassDir[i].passfile[j].count)
{
Max=PassDir[i].passfile[j].count;
index=i;
}
}
OPASSDIR<<PassDir[index].passfile[j].name<<endl;
}
IPASSDIR.close();
IPASSFILE.close();
ICYCLEDIR.close();
OPASSDIR.close();
return 0;
}
sAGiTTaR
2007-05-12
打赏
举报
回复
我是菜鸟,如果
const char *ch=buf.c_str();
那是ch是不是应该等于"//home4//test.txt",照这样的话,那程序应该没有错了,搞不清楚了,高手来指点下吧,楼主最好把报错信息给贴下
=========================
'/' 和'\'是不一样的,unix下的路径名都用'/'来表示,这个字符在字符串中没有特殊意义,一个就够了。
wbkunt
2007-05-12
打赏
举报
回复
我试过了 用"//home4//test.txt"和"/home4//test.txt"是一样的,
还是不行 晕啊!
谢谢楼上这位兄弟
sAGiTTaR
2007-05-12
打赏
举报
回复
把ios::in 换成fstream::in试试
VCLIFE
2007-05-12
打赏
举报
回复
我是菜鸟,如果
const char *ch=buf.c_str();
那是ch是不是应该等于"//home4//test.txt",照这样的话,那程序应该没有错了,搞不清楚了,高手来指点下吧,楼主最好把报错信息给贴下
VCLIFE
2007-05-12
打赏
举报
回复
我想应该是buf.c_str这句的问题吧
VCLIFE
2007-05-12
打赏
举报
回复
对,刚才没有看出来.//表示/
wbkunt
2007-05-12
打赏
举报
回复
就是文件打开失败了
VCLIFE
2007-05-12
打赏
举报
回复
出的什么错啊,你的GCC版本多少
wbkunt
2007-05-12
打赏
举报
回复
刚才写错了 不好意思
string Buf="/home4/test.txt";
ifstream ITEST(Buf.c_str(),ios::in);
if(!ITEST)
{
cerr<<"Fail to open "<<Buf<<endl;
return -1;
}
C++模拟
unix
文件二级目录管理
编程语言编写cmd窗口下
Unix
二级文件目录模拟系统,模拟采用二级目录结构的磁盘文件系统
中
的文件操作
VC获取文件
路径
C++ 写的 可以获取文件
路径
多种方式
查找本执行exe文件所在的
路径
用C++写的查找本执行文件所在的绝对
路径
,360可能认为是病毒!!
VC.Net 解析文件名、扩展名及文件
路径
源码.rar
VC.Net 解析文件名、扩展名及文件
路径
源码,通过选择一个文件,然后点击解析,可以获得文件的名称、扩展名及文件
路径
等信息,挺不错的基础例子,适合新手学习,高手请飘过。
C++如何查找文件
中
在c++
中
是如何查找文件的。里面附有源代码工程
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章