argv参数出现int main()问题
int main() issue with argv parameter
EDIT:以下代码通过Microsoft Visual Studio 2013 运行
我有以下脚本:
#include "stdafx.h"
#include <iostream>
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
int main(int argc, char* argv[])
{
if (argc < 2)
{
std::cout << "Usage: tut1 pathn";
return 1;
}
std::cout << argv[1] << std::endl;
std::cout << "File Size is: " << file_size(argv[1]) << std::endl;
return 0;
}
但是当我用ctrl+f5
运行它时,我得到了这个消息(它是由代码本身的if条件预测的:
Usage: tut1 path
争论的数量似乎低于2。
为什么会发生这种情况?我应该如何避免这个问题?
编辑:
当我删除以下行时:
std::cout << "File Size is: " << file_size(argv[1]) << std::endl;
我在控制台上打印了"Filing.cpp",这意味着argv[0]
的值是Filing.cpp,这进一步表明argv
正在正确地从项目的Debuger的命令参数中获取命令。
但当我再次添加该行时,我看到消息"Filing.exe not found or not built by the last incremental link;"
最简单的解决方案是在编译输出的目录中打开一个提示,调用程序并传入文件名字符串。
例如FileSize.exe foo.jpg
这样可以省去项目配置选项的麻烦。
if
触发是因为应用程序文件名被认为是第一个参数,所以argc == 1
小于2,触发指令。
如果像这样运行它,那么参数的数量只有一个(可执行文件的名称)。如果您正在使用Visual Studio(很可能是这样),并且您想添加参数,请转到属性->调试并在"命令参数"上添加所需的参数
如果要运行带有参数的程序,请通过cmd运行exe文件。Exe文件将在调试目录中。在cmd中,转到exe文件的路径,然后像ABC.exe一样运行命令,然后运行参数。
相关文章:
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 在Ubuntu 16.04上安装Cilk时出现问题
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 编译包含字符串的代码时遇到问题
- 我应该在 main 函数中写什么来测试我的问题?
- 将功能与"int main"问题分开(初学者)
- 有人能告诉我这是如何在main()中实现的吗?(关于无效指针的问题)
- 在功能方面遇到了一些问题,以及它们如何干扰Main
- 我有一个 c++ 代码,它在启动时崩溃,然后到达问题所在 main() 的执行
- 面向C++的main.cpp中的可视化结构声明问题
- g++ 链接问题:在函数 '_start' 中: (.text+0x20):对 'main' 的未定义引用
- void main() 有什么问题
- 我的 int main(){} 有问题
- argv参数出现int main()问题
- GNU 制作问题:"No rule to make target `pjsip.h', needed by `main.o'"