社区
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++程序有什么特殊的地方?
谢谢
...全文
283
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写文章
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;
}
Windows
路径
名的坑
Windows 下
路径
为 \
unix
下为 / int main(int argc,char *argv[]) { string name(".\test.cpp"); //\t
ifstream
in(argv[1]); cout<<argv[1]<<endl; cout<<name<<endl; } 所以为用...
如何从 Visual C++
UNIX
格式保存文件
原文地址: ... ...以下为转载文字: ...可以使用以下步骤来创建 Win32 ...使用 Win32 控制台应用程序应用程序向导来创建名为DOS2
UNIX
的新的空项目从文件菜单上,单击新建,然后单击文件选项卡。选择C/c + + 源文件并命名
CCF201604-3
路径
解析
题目:
问题
描述 在操作系统
中
,数据通常以文件的形式存储在文件系统
中
。文件系统一般采用层次化的组织形式,由目录(或者文件夹)和文件构成,形成一棵树的形状。...在类
Unix
系统(Linux、M
C++I/O流文本文件、二进制文件读写
C++为文件IO流提供了两套设置文件位置指针的成员函数,目的为了兼容有两个位置指针的操作系统,但是
UNIX
\Linux和Windows系统底层只有一个位置指针,所以使用哪套都可以。fstream 对文件的读写操作,继承了ofstream\...
boost I 操作系统相关的库(二)- filesystem系统
目录 一、path 1.path构造 2.追加
路径
3.获取完整绝对
路径
4.文件名可移植性判断 5.
路径
分析 6.
路径
修改 7.异常处理 二、文件 1.文件状态类file_status ...它在底层做了大量的工作,使用POS...
Linux/Unix社区
23,120
社区成员
74,507
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章