如何处理命令行参数
How to process command line arguments?
昨天我用c++编写了一个简单的程序,它使用通过命令行传递的参数。
E.G. myDrive:myPathmyProgram.exe firstWord secondWord
程序运行良好,做它必须做的,但我有一点好奇:我必须先写好argc --;
,然后才能很好地使用它,否则我就会出现运行时崩溃[编译器不会说话!]。
特别是argc
给了我一个糟糕的时间,当我没有给任何单词作为参数的程序,当我运行它…
现在它工作了,所以一点也不坏,但我想知道为什么会发生这种情况!(注:制作argc --;
并打印,得到0
作为值!)
编辑:这里所有使用argc
int main(int argc, char *argv[]) {
[...]
argc --;
if(argc > 0){
if(firstArg.find_last_of(".txt") != string::npos){
reading.open(argv[1], ios::binary);
[...]
}
}
if ((!(firstArg.find_last_of(".txt") != string::npos)) && argc > 0){
[...]
for(int i = 1; i <= argc; i ++){
[...]
toTranslate = argv[i][j];
[...]
toTranslate = argv[i][j];
}
}
}
参数还包括程序本身的名称,因此argc
总是至少为1。
int main(int argc, char * argv[])
{
for (int i = 0; i != argc; ++i)
{
std::cout << "Argument #" << i << ": " << argv[i] << "n";
}
}
或者你可以倒着打印:
while (argc--)
{
std::cout << argv[argc] << "n";
}
相关文章:
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 使用 C++ 将命令行参数拆分为参数/向量
- 如何在OMNET++中添加专门的命令行参数?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- atoi() 在应用于大型命令行参数时会产生不正确的值
- 命令行参数,cant 或两个变量
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 如何在 Android/NDK 上将命令行参数从 gradlew.bat 传递到 Clang
- 编写一个将 LLVM IR 文件作为命令行参数的程序
- 通过命令行参数获取llvm ir文件时面临问题
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 如何在不使用文件扩展名的情况下使用命令行参数打开C++中的文本文件?
- 命令行参数在不到 3 个 LOC 中 int?
- 在命令行参数中使用引号
- 在VS2013中使用devenv (C++)传递命令行参数argv
- 二进制数据作为命令行参数
- 如何在 C++11 中创建具有命令行参数大小的动态数组?
- 需要有关如何设置getopt_long以正确传递命令行参数的建议
- Bash 脚本和命令行参数