C++初学者指南-2.输入和输出—命令行参数
文章目录
- C++初学者指南-2.输入和输出---命令行参数
- 1.这是什么&为什么这样?
- 2.如何在C++中访问
- 3.转换为std::string、int......
- 4.字符串到数字的转换函数
- 5.命令行参数解析库
1.这是什么&为什么这样?
- 程序调用后面的用空格分隔的字符串
- 用于在程序启动时向程序发送信息
- 特别适用于自动化/脚本编写
$ ls
$ rm *.txt
$ find -name *.jpg
$ g++ -o out xy.cpp
2.如何在C++中访问
main.cpp
#include <iostream>
int main (int const argc, char const*const* argv) {
for (int i = 0; i < argc; ++i) {
std::cout << argv[i] << '\n';
}
}
运行上面代码
在Linux下编译和运行
$ g++ -o exe main.cpp // 编译程序为exe文件
$ ./exe 12 abc -z 3 // 带参数运行'exe'
./exe // 程序调用本身
12 // 用户第一个参数
abc // 用户第二个参数
-z // 第三个
3 // 第四个
- 名称 argc 和 argv 只是一个约定。
- argv的每个元素是一个C风格字符串:一个char类型的C风格数组。
- argv 本身就是 C 风格字符串的组成的数组
- argv[0] 包含程序调用(取决于平台)
3.转换为std::string、int…
#include <iostream>
int main (int const argc, char const*const* argv) {
if (argc < 3) {
std::cerr << "Usage: " << argv[0] << " <word> <times>\\n";
return EXIT_FAILURE;
}
auto word = std::string(argv[1]);
int times = atoi(argv[2]);
for (int i = 0; i < times; ++i) {
std::cout << word << ' ';
}
std::cout << '\n';
}
运行上面代码
运行:
$ ./say // 没有参数运行
Usage: ./say <word> <times> // 参数太少 ⇒ 输出程序的用法信息
$ ./say ho! 3 // 带参数运行
ho! ho! ho! // 程序输出
4.字符串到数字的转换函数
#include <cstdlib> (C语言字符串转换函数)
int atoi (char const*);
long atoll (char const*);
double atof (char const*);
#include <string> (C++11标准之后的字符串转换函数)
int stoi (std::string const&);
long stol (std::string const&);
float stof (std::string const&);
double stod (std::string const&);
5.命令行参数解析库
这个和编程知识无关,就是简单介绍了一些命令行参数的解析库,有需要的可自行用翻译功能自行翻译。
附上原文链接
如果文章对您有用,请随手点个赞,谢谢!^_^