我有这段代码:
string username;
string node;
string at;
string final;
struct passwd* user_info = getpwnam("mike");
struct utsname uts;
uname(&uts);
username = user_info->pw_name;
node = uts.nodename;
at = "@";
final = username + at +node;
i=strlen(final[0]);
char *pp = new char[i];
strcpy(pp,final);
fputs(pp, stdout);
我只想在一个strings
中转换这3个char*
。我知道我的代码完全错误,但我通过谷歌测试了很多东西。有人可以帮帮我吗?
答案 0 :(得分:3)
您只需使用strings::c_str()
即可string final;
const char *pp = final.c_str();
如果您需要在char*
而不是const char *
中获取字符串数据,那么您需要copy
这样:
std::string final;
//Allocate pointer large enough to hold the string data + NULL
char *pp = new char[final.size() + 1];
//Use Standard lib algorithm to copy string data to allocated buffer
std::copy(final.begin(), final.end(), pp);
//Null terminate after copying it
pp[final.size()] = '\0';
//Make use of the char *
//delete the allocated memory after use, notice delete []
delete []pp;
答案 1 :(得分:1)
为什么你需要一个* char。我会在最后将所有内容连接起来。如果你需要一个* char,你可以通过以下方式来解决这个问题:
final.c_str();
如果你想使用char。确保保留足够的内存:
i=final.size()+1;
char *pp = new char[i];
答案 2 :(得分:1)
您无法直接将string
转换为char*
。
如果const char*
合适,您可以使用string::c_str()
。
否则,您需要将字符串的内容复制到预先分配的char数组。