【问题标题】:cin in c++ does not read visual studio command line arguments?c++ 中的 cin 不读取 visual studio 命令行参数?
【发布时间】:2022-11-20 21:58:58
【问题描述】:

我正在尝试开始使用 visual studio 2022 for c++。

所以我创建了最基本的 Windows 控制台应用程序,并添加了这个简单的示例代码:

#包括

#include <string>

int main()
{

    std::string firstName;

    std::cin >> firstName; // get user input from the keyboard
    std::cout << "Your name is: " << firstName;
}

然后我去了properties&gt; Configuration properties&gt; Debugging然后在“命令参数”中我填写了“dingdong”。

然后我运行该程序,但没有任何反应。它只是挂起并等待输入。 如果我确实在启动的终端中输入了一些东西,那么它会接受输入并运行程序。

为什么它不接受我输入的命令行参数?

【问题讨论】:

  • 不,std::cin 不会那样做。命令行参数通过 main() 函数的 argcargv 参数传递。但是您甚至没有指定这些。
  • “如果我确实在启动的终端中输入了一些东西,那么它会接受输入并运行程序。”.这是错误的,值得评论。程序运行。该程序使用cin 等待输入,并在cin 返回(有输入或错误)时继续。我的意思是,它不会先接受输入然后运行程序。

标签: c++ visual-studio


【解决方案1】:

如果你想从命令行读取参数,它通过main参数发生。 argc 告诉参数个数,包括程序名,即argv[0]。在这里,我们希望名字为argv[1],然后。

#include <string>

int main(int argc, char *argv[])
{
    std::string firstName;
    if (argc >= 2) { // test that argv[1] is valid
        firstName = argv[1]; // take first name from command line
        // ignore any additional arguments
    } else {
        // no command line arguments given, read first name from cin
        std::cin >> firstName; // get user input from the keyboard
        // should add check for cin error
    }

    std::cout << "Your name is: " << firstName;
}

【讨论】:

    最近更新 更多