C++ 无法将c+;中的字符串转换为字符+;?

C++ 无法将c+;中的字符串转换为字符+;?,c++,string,char,error-correction,C++,String,Char,Error Correction,有人知道这个代码有什么问题吗 #include <iostream> #include <stdio.h> using namespace std; int main() { string a; getline(cin, a); for(;;) { string x; x=1; string b; getline(cin, b); string c; getline(cin, c); string d;

有人知道这个代码有什么问题吗

#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
string a;
getline(cin, a);
for(;;)
{
    string x;
    x=1;
    string b;
    getline(cin, b);
    string c;
    getline(cin, c);
    string d;
    d=a+b;
    string e;
    e=b+c;
    if(b=="1")
    {
        return 0;
    }
    rename(d, e);
}
}
部分。它给出了一个错误

cannot convert 'std::__cxx11::string {aka std::__cxx11::basic_string<char>}' to 'const char*' for argument '1' to 'int rename(const char*, const char*)
无法将参数“1”的“std::_cxx11::string{aka std::_cxx11::basic_string}”转换为“const char*”,将其转换为“int rename(const char*,const char*)

所以我假设它不能将字符串转换成字符。有人知道怎么做并发送更正的部分吗

没有从
std::string
到char指针的隐式转换,您需要通过函数调用调用它:

rename( d.c_str(), e.c_str() ); 

没有从
std::string
到char指针的隐式转换,您需要通过函数调用调用它:

rename( d.c_str(), e.c_str() ); 

rename(d.c_str(),e.c_str())谢谢,为什么不把这个也作为一个答案发布,这样我就可以给你一个投票。你应该发布
rename
的功能。在您的帖子中可以看到的只有
重命名
的签名。@Sebastian Hoffmann所说的符合签名,但它能产生预期的效果吗?@lakeweb它是来自C标准库(
stdio.h
)@lakeweb它是
std::rename
,并且askers不需要发布标准函数的详细信息。如果不熟悉函数
rename(d.c_str(),e.c_str()),可以查找文档谢谢,为什么不把这个也作为一个答案发布,这样我就可以给你一个投票。你应该发布
rename
的功能。在您的帖子中可以看到的只有
重命名
的签名。@Sebastian Hoffmann所说的符合签名,但它能产生预期的效果吗?@lakeweb它是来自C标准库(
stdio.h
)@lakeweb它是
std::rename
,并且askers不需要发布标准函数的详细信息。如果不熟悉该函数,可以查找文档