C++中std::cin为何无法读取Visual Studio命令行参数?
问题解答:std::cin为何不读取Visual Studio设置的命令行参数?
你搞混了标准输入和命令行参数的输入逻辑:
std::cin是从标准输入流(默认对应键盘)读取数据,和你在Debugging选项里设置的命令行参数完全是两个独立的输入渠道,所以它不会去读取命令行参数。- 你设置的「command arguments」是程序启动时传递给
main函数的启动参数,必须通过main函数的专用形参来获取。
如果要读取你设置的"dingdong"参数,需要修改main函数为带参数的形式,示例代码如下:
#include <string> #include <iostream> // argc是参数总数,argv是存储参数的字符串数组 int main(int argc, char* argv[]) { if (argc > 1) { // argv[1]就是你设置的第一个命令行参数 std::string firstName = argv[1]; std::cout << "Your name is: " << firstName; } else { // 没有命令行参数时, fallback到键盘输入 std::string firstName; std::cout << "请输入你的名字:"; std::cin >> firstName; std::cout << "Your name is: " << firstName; } return 0; }
补充说明:
argc至少为1,因为argv[0]默认存储的是程序自身的执行路径。- 如果你设置了多个命令行参数,会依次存放在
argv[1]、argv[2]……里,argc的数值也会对应增加。
内容的提问来源于stack exchange,提问作者penstiaGarse
相关产品推荐
相关产品推荐

