0

编辑:以下代码通过 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 path\n";
        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从项目调试器的命令参数中正确获取命令。

但是当我再次添加该行时,我看到了消息"Filing.exe not found or not built by the last incremental link;"

4

3 回答 3

4

最简单的解决方案是在编译输出的目录中打开一个提示符并调用您的程序并传入文件名的字符串。

例如FileSize.exe foo.jpg

这样可以避免弄乱项目配置选项。

触发是if因为应用程序文件名被认为是第一个参数,所以argc == 1它小于 2,触发指令。

于 2014-09-02T13:46:51.743 回答
4

如果您像这样运行它,则参数的数量只有一个(可执行文件名称)。如果您使用的是 Visual Studio(可能是)并且想要添加参数,请转到属性->调试并在“命令参数”中添加所需的参数

于 2014-09-02T13:49:34.663 回答
2

如果要运行带参数的程序,请通过 cmd 运行 exe 文件。exe文件将在调试目录中。在 cmd 中转到 exe 文件的路径,然后运行 ​​ABC.exe 之类的命令,然后运行参数。

于 2014-09-02T13:54:32.837 回答