我已经看到数组argv(在c/c ++程序中)包含已被引号括起来的字符串.
例如,考虑以下程序:
#include <iostream>
using namespace std;
int main (int argc, char* argv[]) {
cout << argv[1];
}
Run Code Online (Sandbox Code Playgroud)
当我执行它时:
./prog 'asd'
Run Code Online (Sandbox Code Playgroud)
我收到:
asd
Run Code Online (Sandbox Code Playgroud)
有没有办法知道某个参数是否被linux中的引号(单数或双引号)剥离,而没有转义它们(如此处建议如何防止在argv中丢失双引号?)?
C++运行时不是从字符串中删除引号,而是操作系统shell(例如Bash).后者有效地将参数传递给您的程序.所以,你需要遵循shell的规则.例如,在Bash中,您需要"转义"引号
./prog \"something\"
Run Code Online (Sandbox Code Playgroud)
因为引号有特殊含义.无法从C++程序中"强制"引用,因为在运行程序之前它们会被删除.
| 归档时间: |
|
| 查看次数: |
962 次 |
| 最近记录: |