C++错误:无法将'std :: basic_string <char>'转换为'const char*'

Roc*_*ket 1 c++ string string-concatenation

我正在使用一个函数来下载文件.

void downloadFile(const char* url, const char* fname) {
  //..
}
Run Code Online (Sandbox Code Playgroud)

这被称为:

downloadFile("http://servera.com/file.txt", "/user/tmp/file.txt");
Run Code Online (Sandbox Code Playgroud)

这工作正常.

但我想将URL更改为数组中的值.该数组存储加密值,当解密时是字符串,所以我得到了问题error: cannot convert ‘std::basic_string<char>’ to ‘const char*’

我试过了:

 string test = decode(foo[5]);
 const char* t1= test.c_str();
 downloadFile(t1 "filename.txt", "/user/tmp/file.txt");

downloadFile(t1 + "filename.txt", "/user/tmp/file.txt");
Run Code Online (Sandbox Code Playgroud)

downloadFile((decode(foo[5]).c_str()) + "filename.txt", "/user/tmp/file.txt");
Run Code Online (Sandbox Code Playgroud)

这使: error: invalid operands of types ‘const char*’ and ‘const char [17]’ to binary ‘operator+’

我究竟做错了什么 ?

谢谢

eml*_*lai 5

C字符串不能连接+.

std::string::+改为使用:

downloadFile((test + "filename.txt").c_str(), "/user/tmp/file.txt");
Run Code Online (Sandbox Code Playgroud)

请注意,c_str只返回指向std::string内部字符数组的指针,因此它仅在执行downloadFile函数期间有效.