c++ cstring转const char*
时间: 2023-11-13 12:08:11 浏览: 48
可以使用cstring库中的函数c_str()将std::string类型转换为const char*类型,例如:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
string str = "Hello World";
const char* cstr = str.c_str();
cout << cstr << endl;
return 0;
}
```
输出结果为:
```
Hello World
```
相关问题
const char*转为char*
在C++中,将const char*转换为char*是不允许的,因为const char*指针指向的是只读的内存,而char*指针可以修改内存中的值。这样的转换会导致编译错误。
如果你想要修改const char*指针指向的内容,你需要另外开辟新的空间,并将内容复制到新的char*指针中。你可以使用strcpy函数来完成这个操作。
下面是一个示例代码,演示了如何将const char*转换为char*:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main() {
const char* cpc = "abcde";
char* pc = new char[100];
strcpy(pc, cpc);
cout << pc << endl;
delete[] pc;
return 0;
}
```
这段代码首先创建了一个const char*指针cpc,指向字符串"abcde"。然后创建了一个char*指针pc,通过strcpy函数将cpc指向的内容复制到pc指针指向的内存中。最后输出pc指针指向的字符串。
char*与const char*
char*和const char*都是指向字符数组的指针,但是它们之间有一些重要的区别。char*指针可以用于修改指向的字符数组,而const char*指针则不能修改指向的字符数组。
下面是一个例子,演示了char*和const char*之间的区别:
```c++
#include <iostream>
#include <cstring>
int main() {
char str1[] = "Hello";
char* ptr1 = str1;
std::cout << "Before modification: " << ptr1 << std::endl;
ptr1[0] = 'h';
std::cout << "After modification: " << ptr1 << std::endl;
const char* str2 = "World";
const char* ptr2 = str2;
std::cout << "Before modification: " << ptr2 << std::endl;
// 下面这行代码会导致编译错误
// ptr2[0] = 'w';
std::cout << "After modification: " << ptr2 << std::endl;
return 0;
}
```
输出结果为:
```
Before modification: Hello
After modification: hello
Before modification: World
After modification: World
```
可以看到,通过char*指针可以修改指向的字符数组,而通过const char*指针则不能修改指向的字符数组。