mail; s-6ren">
gpt4 book ai didi

c++ - 试图将字符串变量传递给 std::system

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

我的代码:

std::string mail;
std::string password;
std::system("mkdir ~/.cache/pbt");
std::cout << "Enter your accounts mail" << std::endl;
std::cin >> mail;
std::cout << "Now enter your accounts password";
std::cin >> password;
std::system("perl zap2xml.pl -u " + mail + " -p " + password + " -o ~/.cache/pbt");

当我尝试编译这段代码时:

编译器说

main.cpp:13:62: error: cannot convert ‘std::__cxx11::basic_string<char>’ to ‘const char*’
13 | std::system("perl zap2xml.pl -u " + mail + " -p " + password + " -o ~/.cache/pbt");
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
| |
| std::__cxx11::basic_string<char>
In file included from /usr/include/c++/9.2.0/cstdlib:75,
from /usr/include/c++/9.2.0/ext/string_conversions.h:41,
from /usr/include/c++/9.2.0/bits/basic_string.h:6493,
from /usr/include/c++/9.2.0/string:55,
from /usr/include/c++/9.2.0/bits/locale_classes.h:40,
from /usr/include/c++/9.2.0/bits/ios_base.h:41,
from /usr/include/c++/9.2.0/ios:42,
from /usr/include/c++/9.2.0/ostream:38,
from /usr/include/c++/9.2.0/iostream:39,
from main.cpp:1:
/usr/include/stdlib.h:784:32: note: initializing argument 1 of ‘int system(const char*)’
784 | extern int system (const char *__command) __wur;
| ~~~~~~~~~~~~^~~~~~~~~

看起来 std::system 不能读取 std::string 变量,只能读取 const char* ,但是有一定有某种方法可以做到这一点。

我该如何解决这个问题?

最佳答案

std::system()const char* 作为输入,但您正试图将其传递给 std::string反而。 std::string 不能隐式转换为 const char*,因此会出现编译器错误。但是,您可以使用字符串的 c_str()获取 const char* 的方法,例如:

std::string cmd = "perl zap2xml.pl -u '" + mail + "' -p '" + password + "' -o ~/.cache/pbt";
std::system(cmd.c_str());

或者:

std::system(("perl zap2xml.pl -u '" + mail + "' -p '" + password + "' -o ~/.cache/pbt").c_str());

请注意 mailpassword 字符串被包裹在单引号内。这是因为这两个参数可以包含特殊字符或恶意代码,因此应该相应地进行转义。

关于c++ - 试图将字符串变量传递给 std::system,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59295533/

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