C ++问题中字符串的字符串

时间:2012-01-22 14:32:29

标签: c++ string char

我有这段代码:

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*。我知道我的代码完全错误,但我通过谷歌测试了很多东西。有人可以帮帮我吗?

3 个答案:

答案 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数组。