C ++ String и char * c строки стиля - PullRequest
3 голосов
/ 28 апреля 2011

У меня есть библиотека ac, в которой в качестве строк используются массивы char, и я хочу использовать в своем коде c ++ std :: string. Может ли кто-нибудь помочь мне как преобразовать строки стиля char * c в строки библиотеки STL?1002 * например у меня есть:

char *p="abcdef";
string p1;

и

string x="abc";
char *x1;

как я могу преобразовать p в p1 и x в x1

Ответы [ 5 ]

7 голосов
/ 28 апреля 2011

Используйте оператор присваивания строки, чтобы заполнить его из символа *:

p1 = p;

Используйте метод c_str () для возврата константного символа *:

x1 = x.c_str();
5 голосов
/ 28 апреля 2011

Из char * в std :: string:

char p[7] = "abcdef";
std::string s = p;

От std :: string до char *:

std::string s("abcdef");
const char* p = s.c_str();
3 голосов
/ 28 апреля 2011

Вы можете построить std::string из строки C таким образом:

string p1 = p;

Вы можете получить const char * из std::string, таким образом:

const char *x1 = x.c_str();

Если выЕсли вы хотите char *, вам нужно создать копию строки:

char *x1 = new char[x.size()+1];
strcpy(x1, x.c_str());
...
delete [] x1;
2 голосов
/ 28 апреля 2011

string имеет конструктор и оператор присваивания, которые принимают char const* в качестве аргумента, поэтому:

string p1(p);

или

string p1;
p1 = p;

Должно работать. С другой стороны, вы можете получить char const* (не символ *) от string, используя метод c_str(). Это

char const* x1 = x.c_str();
0 голосов
/ 01 января 2013
#include <string.h>
#include <stdio.h>

// Removes character pointed to by "pch"
// from whatever string contains it.
void delchr(char* pch)
{
    if (pch)
    {
        for (; *pch; pch++)
            *pch = *(pch+1);
    }
}

void main()
{
    // Original string
    char* msg = "Hello world!";

    // Get pointer to the blank character in the message
    char* pch = strchr(msg, ' ');

    // Delete the blank from the message
    delchr(pch);

    // Print whatever's left: "Helloworld!"
    printf("%s\n", msg);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...