读入文件失败,求帮助

LAST_MAN 2011-11-24 08:57:48
#include<iostream>
#include<fstream>
#include<list>
#include<algorithm>
#include<string>
using namespace std;
int main(int agrc,char**agrv)
{
if(agrc<2) //此处是检查命令行参数个数,但是我有一点不明白,命令行是什么,在哪里?
{
cerr<<"no input file!"<<endl;
return EXIT_FAILURE;
}
ifstream infile;
infile.open(agrv[1]); //此处是打开agrv[1]文件,我在这个项目的文件夹下面建立了一个txt文件
//文件名就是agrv[1],在这个文件里我输入了一篇英语文章
if(!infile){
cerr<<"can not open file"<<endl;
return EXIT_FAILURE;}
list<string> words;
string word;
while(infile>>word)
words.push_back(word);
words.sort();
words.unique();
cout<<"unique words:"<<endl;
for(list<string>::iterator iter=words.begin();iter!=words.end();++iter)
cout<<*iter<<" ";
cout<<endl;
return 0;


}


我执行这段代码,目的是删除重复的单词,并输出不重复的单词。但是我执行后出现no input file! 也就是说我的命令行参数小于2,这里我不懂,要怎么样才能使它大于2呢??请大家指点
...全文
119 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2011-11-24
  • 打赏
  • 举报
回复
1.我在打开运行->输入CMD,然后再DOS下面输入了list.exe
list.exe 不在当前目录,当然是不能运行的
(去网上搜下DOS基本命令学习下,如cd,md,rd,dir等)
参考:http://baike.baidu.com/view/283786.htm
2.参数的文件名不一定是agrv[1].txt,就是一文本文件,且它必须存在,如用记事本写一文件,然后另存为test.txt(文件名你自己取一个,只要与运行时相同就行),但一定要注意路径(这个dos基本命令中会有介绍的)

LAST_MAN 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 lyzh04061135 的回复:]
按照大家给的方法试试,这个没问题的
[/Quote]
呵呵,我一开始完全不知道怎么回事。现在知道原来要在DOS那里输入程序的名字还有要打开的文本文件名字作为参数传给这个程序
不过遇到新的问题,我在打开运行->输入CMD,然后再DOS下面输入了list.exe agrv[1].txt,但是电脑说list.exe不是内部或外部命令,也不是可运行程序、

这是怎么回事
duke56 2011-11-24
  • 打赏
  • 举报
回复

/*
操作步骤:

1.代码没问题,把编译好的文件放到D盘根目录下
2.在开始菜单下打开命令行,也可以直接Win+R然后输入CMD
3.切换目录,在命令下输入:"D:"//这里不在有引号哦,只是在贴了里表示一下
4.命令行输入:xxx.exe xx.txt//自己要建个文本并写些内容,要不会提示没文件退出程序
//知道上边的xx代表什么了吧,睡觉......8
*/
LAST_MAN 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 duke56 的回复:]
C/C++ code


//命令行就是Win下的DOS在DOS下输入你的程序名,然后输入你要的参数
//既然你用到命令行,编译后就不能直接运行程序,而得在命令行下传参数给程序
[/Quote]
我在打开运行->输入CMD,然后再DOS下面输入了list.exe agrv[1].txt,但是电脑说list.exe不是内部或外部命令,也不是可运行程序、

这是怎么回事
lyzh04061135 2011-11-24
  • 打赏
  • 举报
回复
按照大家给的方法试试,这个没问题的
duke56 2011-11-24
  • 打赏
  • 举报
回复

//命令行就是Win下的DOS在DOS下输入你的程序名,然后输入你要的参数
//既然你用到命令行,编译后就不能直接运行程序,而得在命令行下传参数给程序
LAST_MAN 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]
你用什么编译器?
命令行的,可用#1的,
xx.exe是你的执行文件名,text.txt是你的输入文件
如果你是用VS(如VS2008),IDE方式,在项目属性的
配制属性->调试->命令行参数中
输入你的输入文件名(最好带路径)
[/Quote]
用了你的方法后,现在执行代码出现的是can not open file,是怎么回事?我不是已经指定了打开agrv[1].txt吗
LAST_MAN 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]
你用什么编译器?
命令行的,可用#1的,
xx.exe是你的执行文件名,text.txt是你的输入文件
如果你是用VS(如VS2008),IDE方式,在项目属性的
配制属性->调试->命令行参数中
输入你的输入文件名(最好带路径)
[/Quote]
我在命令行参数那里输入了我要的文件名入f:\agrv[1].txt
但是调试出现
正在链接...
LINK : 没有找到 F:\c++ primer\读入文件,删除重复单词\Debug\读入文件,删除重复单词.exe 或上一个增量链接没有生成它;正在执行完全链接
LAST_MAN 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 keiy 的回复:]
你用什么编译器?
命令行的,可用#1的,
xx.exe是你的执行文件名,text.txt是你的输入文件
如果你是用VS(如VS2008),IDE方式,在项目属性的
配制属性->调试->命令行参数中
输入你的输入文件名(最好带路径)
[/Quote]
我的是用VS2008的,我一打开那个可执行文件,就弹出那个dos框,然后一下子就自动关了。只能打开VC project文件,然后按调试,然后执行,然后就出现了了no input file。我是建立一个空项目,然后添加一个cpp文件,然后就开始打代码了,然后就调试执行。请问这样做错在哪里?
柯本 2011-11-24
  • 打赏
  • 举报
回复
你用什么编译器?
命令行的,可用#1的,
xx.exe是你的执行文件名,text.txt是你的输入文件
如果你是用VS(如VS2008),IDE方式,在项目属性的
配制属性->调试->命令行参数中
输入你的输入文件名(最好带路径)
LAST_MAN 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hnuqinhuan 的回复:]
在当前工程Debug目录下面命令行输入 xx.exe text.txt
[/Quote]
能够详细点吗??输入xx.exe是代表什么。 text.txt是代表什么?
無_1024 2011-11-24
  • 打赏
  • 举报
回复
在当前工程Debug目录下面命令行输入 xx.exe text.txt

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧