我将两个std :: string&#传递给一个创建别名的函数,并将其回显到linux中的bashrc并遇到一些问题。
无论如何,因为系统()期待一个字母,这不会工作,我似乎无法弄清楚,提前感谢! (这是一个代码片段,希望能够说明我想说的内容)
#include <iostream>
int create_alias(std::string&, std::string&);
int main(void)
{
return 0;
}
int create_alias(std::string &alias, std::string &name)
{
#ifndef __linux__
std::cout << "Program not supported, aborting!";
return 1;
#endif
if ( system("echo alias " + name + "='" + alias + "' >> .bashrc") != 0 )
return 1;
return 0;
}
答案 0 :(得分:1)
system
函数需要const char*
参数。形成一个字符串,然后将pointer to a null terminated character array提供给system
函数:
std::string s = "echo alias " + name + "='" + alias + "' >> .bashrc";
if (system(s.c_str()) != 0)
答案 1 :(得分:1)
您可以使用yourstring.c_str()
,它会返回char *
。
此外,使用system()
是bad idea,您只需通过.bashrc
写信至fstream
。
答案 2 :(得分:0)
从您使用的字符串中获取const char * .c_str()
string msg="echo alias " + name + string("='" + alias + "' >> .bashrc";
system(msg.c_str());
答案 3 :(得分:0)
使用std::string::c_str()
方法从const char *
获取std::string
,例如:
int create_alias(const std::string &alias, const std::string &name)
{
#ifndef __linux__
std::cout << "Program not supported, aborting!";
return 1;
#else
std::string cmd = "echo alias " + name + "='" + alias + "' >> .bashrc";
if ( std::system(cmd.c_str()) != 0 )
return 1;
return 0;
#endif
}
答案 4 :(得分:0)
std::string::c_str()
函数返回const char*
C字符串:
if ( system( (std::string("echo alias ") +
name +
"='" +
alias +
"' >> .bashrc").c_str() ) != 0 )