C ++ String和char * c stype字符串

时间:2011-04-28 16:48:14

标签: c++ visual-c++

我有一个c库,它使用char数组作为字符串,我想在我的代码中使用c ++ std :: string, 有人可以帮助我如何在char * c样式字符串和STL库字符串之间进行转换?

例如我有:

char *p="abcdef";
string p1;

string x="abc";
char *x1;

如何将p转换为p1和x转换为x1

5 个答案:

答案 0 :(得分:7)

使用字符串的赋值运算符从char *:

填充它
p1 = p;

使用string的c_str()方法返回const char *:

x1 = x.c_str();

答案 1 :(得分:5)

从char *到std :: string:

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

从std :: string到char *:

std::string s("abcdef");
const char* p = s.c_str();

答案 2 :(得分:3)

您可以从C字符串构造std::string

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;

答案 3 :(得分:2)

string有一个构造函数和赋值运算符,它将char const*作为参数,所以:

string p1(p);

string p1;
p1 = p;

应该有效。反过来说,您可以使用char const*方法从string获取c_str()(不是char *)。那是

char const* x1 = x.c_str();

答案 4 :(得分:0)

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