2023年5月21日,周日中午:
今天在写项目的时候遇到了这个问题,也解决了,所以记录一下
通过string类的copy成员函数就可以解决这个问题
copy函数的函数原型:
string& copy(char* s, size_t n, size_t pos = 0);
其中,参数s指向存放拷贝内容的字符数组;参数n表示要拷贝的字符数;参数pos可选,表示在字符串中从哪个位置开始拷贝,默认为0。此函数会返回一个指向string对象自身的引用,即this指针。
举例说明:
#include <iostream>
#include <string>
int main()
{
std::string str = "Hello, world!";
char *ptr = new char[str.size() + 1]; // 加上字符串结束标志 '\0'
str.copy(ptr, str.size() + 1);
std::cout << ptr << std::endl;
delete[] ptr;
return 0;
}
我踩过的坑:c_str()返回的不是char*,而是const char*
const char*和char*有什么区别:
const char*和char*虽然看起来很相似,但实际上有很大的区别。
const char*用于声明一个指向常量字符的指针,也就是说它所指向的字符不能被修改。
而char*则用于声明一个指向非常量字符的指针,也就是说它所指向的字符可以被修改。
我踩过的坑。运行下面这个会报错:
#include <iostream>
#include <string>
int main()
{
std::string str = "Hello, world!";
char *ptr;
ptr=str.c_str();
std::cout << ptr << std::endl;
return 0;
}