命令行输入c ++ [重复]
Posted
技术标签:
【中文标题】命令行输入c ++ [重复]【英文标题】:Command Line input c++ [duplicate] 【发布时间】:2013-12-12 01:34:16 【问题描述】:我知道当我写的时候:
int main (int argc, char *argv[])
return 0;
我可以获取命令行输入(例如文件)以从中读取输入。但是,当编译后会给出输入文件时,我该怎么办。我的意思是假设输入文件 inputFile.txt 的名称和我的代码存储在 main.cpp 中。我会跟进的。
g++ main.cpp -o main
./main inputFile.txt
为了能够得到inputFile.txt,我该怎么做?
【问题讨论】:
从args获取文件名,查看文件是否存在,打开文件,获取内容,获利 @afuzzyllama main(int argc,char *argv[] ) 在这种情况下是否足以获取输入文件? 这可能会有所帮助:***.com/questions/3024197/…char *pszFileName = argv[0]
(或者在某些情况下可能是argv[1]
)。如果没有足够的参数(通过检查argc
)来处理。
@caesar 问另一个问题。 (以及当您检查重复项时)即:读取 C++ 文件(已知文件名)
【参考方案1】:
argc
存储参数的数量。 argv
是一个参数数组。
argv[0]
将是程序名称(如果有)。见:Is "argv[0] = name-of-executable" an accepted standard or just a common convention?
如果您只传递一个参数,则可以使用argv[1]
(您的输入文件名)来执行您需要的任何操作。
请查看What does int argc, char *argv[] mean?了解更多信息。
【讨论】:
试着记住什么时候 argv[0] 是第一个实际参数,什么时候 argv[1] 是...argv[0]
是程序名称。 argv[1]
是第一个参数。
@MikeSeymour 除非它不是 :-) 顺便说一句,这可能是另一种语言......我漂浮了两次......
仅当名称可用时。见:***.com/questions/2050961/…
不,如果argc > 0
,argv[0]
始终是程序名称。如果程序没有名称,则 argv[0][0] == '\0'
(即argv[0]
是一个空字符串)。但是argv[0]
绝不是传递给程序的参数。 argv[1]
始终是传递给程序的第一个参数。【参考方案2】:
你有两个选择。
在您输入的情况下,字符串“inputFile.txt”将在 argv[1] 中(arv[0] 是您的实际命令)。然后,您可以使用您的操作系统来读取此文件。
可能更简单的是使用重定向;即将命令行更改为“./main
第一种方法(或编写支持这两种方法的程序)将更适合商业应用,但第二种方法将用于学习目的。
【讨论】:
【参考方案3】:在伪代码中:
foreach(argv)
if(argv exists)
open filehandle;
do stuff
else
printf "Your file does not seem to exist";
【讨论】:
以上是关于命令行输入c ++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章