c++ - 使用 optarg 在 Linux 中获取参数选项(包含空格)列表的问题

标签 c++ linux

(C++ [cmake] 和 Linux CentOS 7.0)

我在 Linux 中有一个带有参数的命令,其选项是一个空格分隔值列表:

命令一般是这样的:

getemail -c robert 12345 google.com

我的论点选项是:

robert 12345 google.com

我将它传递给这样的变量:

char* option_value = optarg;

但 option_value 和 optarg 都不是包含完整的选项序列,它们只包含第一个空格之前的字符序列,因此当我 cout << optarg;我得到:

robert

但是当我调试它时,我看到了 optarg包含由 \000 分隔的完整字符列表,像这样的数组:

r
o
b
e
r
t
/000
1
2
3
4
5
/000
g
o
o
g
l
e
.
c
o
m

谁能告诉我这是什么问题?

最佳答案

如果您想将 robert 12345 google.com 作为单个对象传递,并将其作为 optarg 提供给某些选项。您可以在命令行参数中使用双引号或单引号。

不要忘记在 getopt 中为选项提供 ':'。

关于c++ - 使用 optarg 在 Linux 中获取参数选项(包含空格)列表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33384756/

相关文章:

c++ - 为什么 std::sort 不接受函数内声明的比较类

c++ - 试图解决我的双端队列类和树类之间的循环引用错误

c++ - MinGW 4.6.2 std::原子指针

linux - Gstreamer udpsrc插件查询

Linux根据输入日期复制文件

c++ - 如何在一个函数中拥有所有选项?

c++ - 查找未实现的类方法

基于文件的进程通信的 Java 文件锁定机制

linux - 安装媒体信息

c - 在 linux x86_64 下非常快速地 ip-as-int 查找 IPv4 套接字?