命令行输入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 > 0argv[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 ++ [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在linux复制命令行的快捷键

secureCRT输入命令会重复显示和重复换行,怎么解决

使用python运行命令行[重复]

命令行教程

Linux下uniq命令的详解

Python 3 不会从 Git Bash 命令行运行 [重复]