Строки для Char в C ++ - PullRequest
       23

Строки для Char в C ++

0 голосов
/ 22 января 2012

У меня есть этот код:

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);

Я просто хочу конвертировать эти 3 strings в один char*. Я знаю, что мой код полностью неверен, но я проверяю многие вещи через Google. Может кто-нибудь помочь мне, пожалуйста?

Ответы [ 3 ]

3 голосов
/ 22 января 2012

Вам просто нужно использовать 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 голос
/ 22 января 2012

Вы не можете напрямую преобразовать string в char*.

Если подходит const char*, вы можете использовать string::c_str().

В противном случае вам нужноскопировать содержимое строки в предварительно выделенный массив символов.

1 голос
/ 22 января 2012

Зачем вам нужен * char.Я бы в конце все конкатонировал.Если вам нужен * char, вы можете добиться этого, позвонив по номеру:

 final.c_str();

Если вы хотите использовать char.Убедитесь, что вы зарезервировали достаточно памяти:

 i=final.size()+1; 
 char *pp = new char[i];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...