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不需要发布标准函数的详细信息。如果不熟悉该函数,可以查找文档