【发布时间】:2019-12-11 23:14:47
【问题描述】:
我的代码:
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* ,但必须有某种方法可以做到这一点。
我该如何解决这个问题?
【问题讨论】:
-
您应该将这些字符串放在单引号内,因为这些字符串可能包含特殊字符或恶意脚本。
标签: c++ linux c++11 system std