visualc++字符串和char * C类型字符串

visual C++ String and char * c stype strings

本文关键字:字符串 类型 char visualc++      更新时间:2023-10-16

我有一个使用字符数组作为字符串的c库,我想在我的代码上使用c++ std::string,有人能帮助我如何在char * c风格字符串和STL库字符串之间转换吗?

例如:

char *p="abcdef";
string p1;

string x="abc";
char *x1;

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

使用string的赋值操作符从char *:

p1 = p;

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

x1 = x.c_str();

从char*到std::string:

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

从std::string到char*:

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

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

string p1 = p;

你可以从一个std::string得到一个const char *:

const char *x1 = x.c_str();

如果您想要一个char *,您需要创建字符串的副本:

char *x1 = new char[x.size()+1];
strcpy(x1, x.c_str());
...
delete [] x1;

string有一个构造函数和一个赋值操作符,将char const*作为实参,因此:

string p1(p);

string p1;
p1 = p;

应该工作。另一种方式,您可以使用c_str()方法从string获得char const*(不是char*)。这是

char const* x1 = x.c_str();
#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("%sn", msg);
}