gpt4 book ai didi

c++ - 在 Linux 中检测分号作为命令行参数

转载 作者:行者123 更新时间:2023-11-28 01:33:08 25 4
gpt4 key购买 nike

我正在尝试运行一个 C++ 应用程序,我将一些命令行参数传递给它,如下所示:

./startServer -ip 10.78.242.4 tcpip{ldap=no;port=2435}

应用程序正在崩溃,因为它无法获得正确的端口。在网上搜索,我发现“;”被视为命令字符 ( Semicolon on command line in linux) 的结尾,因此之后的所有内容都将被忽略。我也明白把它放在引号内会很好。但是,我不想将这种将参数放在引号中的限制强加给用户。所以,我想知道有没有办法处理“;” argv 数组中的字符?

最佳答案

分号分隔两个命令,因此您的命令行等同于

./startServer -ip 10.78.242.4 tcpip{ldap=no
port=2435}

您的应用程序永远不会知道分号或第二个命令的任何信息,这些将完全由 shell 处理。您需要使用反斜杠转义冒号或将其括在引号中。其他可能导致类似问题的字符包括:$,\-#`'":*?()&|

复杂的字符串更容易从文件或通过标准输入传递。

关于c++ - 在 Linux 中检测分号作为命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50713388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com