gpt4 book ai didi

linux - 使用在双引号中包含空格的参数调用 std::system

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:16 28 4
gpt4 key购买 nike

我需要使用参数调用 linux std::system 调用,而不是包含带空格的字符串。为了使用 argc/argv 正确处理它,我想用双引号将其传递。

std::string cmdline = "myprogram -d \"I am a sting\"" ;

如果我计算出这个字符串,我会得到很好的结果。

当我将它发送到 std::system(cmdline)看看我得到的 ps -efmyprogram -d 我是一个字符串

如何将“我是一个字符串”保留为 myprogram 的单个参数?

最佳答案

没问题:

dlaru@IKH-LAPTOP /cygdrive/c/Users/dlaru
$ cat test.cpp
#include <iostream>
#include <string>
#include <cstdlib>
int main()
{
std::string cmdline = "./see \"I am a string\"";
std::cout << cmdline << std::endl;
std::system(cmdline.c_str());
}

dlaru@IKH-LAPTOP /cygdrive/c/Users/dlaru
$ cat see.cpp
#include <iostream>
int main(int argc, char* argv[])
{
for (int i = 0; i < argc; ++i)
{
std::cout << argv[i] << std::endl;
}
}

dlaru@IKH-LAPTOP /cygdrive/c/Users/dlaru
$ g++ -std=c++11 test.cpp -o test

dlaru@IKH-LAPTOP /cygdrive/c/Users/dlaru
$ g++ -std=c++11 see.cpp -o see

dlaru@IKH-LAPTOP /cygdrive/c/Users/dlaru
$ ./test
./see "I am a string"
./see
I am a string

(在 Cygwin 中测试)

关于linux - 使用在双引号中包含空格的参数调用 std::system,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42897402/

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