在Visual Studio C++中读取程序参数,可以通过以下方法实现:
argc
和argv
参数在C++主函数中,argc
表示程序参数的个数,argv
表示程序参数的数组。argv[0]
是程序名称,argv[1]
到argv[argc-1]
是程序参数。
#include<iostream>
int main(int argc, char* argv[]) {
for (int i = 0; i < argc; ++i) {
std::cout << "argv[" << i << "] = "<< argv[i]<< std::endl;
}
return 0;
}
GetCommandLine
函数GetCommandLine
函数可以获取整个命令行字符串,然后可以使用strtok
函数将其分割成单独的参数。
#include<iostream>
#include<string>
#include<Windows.h>
int main() {
LPTSTR cmdline = GetCommandLine();
std::wstring wstr(cmdline);
std::string str(wstr.begin(), wstr.end());
char* p = strtok(const_cast<char*>(str.c_str()), " ");
while (p != nullptr) {
std::cout << p << std::endl;
p = strtok(nullptr, " ");
}
return 0;
}
boost::program_options
库boost::program_options
是一个用于解析程序参数的库,可以方便地将参数转换为不同的数据类型。
#include<iostream>
#include<boost/program_options.hpp>
namespace po = boost::program_options;
int main(int argc, char* argv[]) {
std::string name;
int age;
po::options_description desc("Allowed options");
desc.add_options()
("help", "produce help message")
("name", po::value<std::string>(&name)->required(), "your name")
("age", po::value<int>(&age)->required(), "your age");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("help")) {
std::cout<< desc<< std::endl;
return 0;
}
std::cout << "Name: "<< name<< std::endl;
std::cout << "Age: "<< age<< std::endl;
return 0;
}
以上是在Visual Studio C++中读取程序参数的常用方法。
领取专属 10元无门槛券
手把手带您无忧上云