我有一个c库,它使用char数组作为字符串,我想在我的代码中使用c ++ std :: string, 有人可以帮助我如何在char * c样式字符串和STL库字符串之间进行转换?
例如我有:
char *p="abcdef";
string p1;
和
string x="abc";
char *x1;
如何将p转换为p1和x转换为x1
答案 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);
}