c++ cstring转const char*
时间: 2023-11-13 14:08:11 浏览: 101
可以使用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
```
相关问题
(ANSI 字符串1) 实现函数 //判定字符串的头部 bool startWith( const char * str, const char * head ) { //待完成 } //判定字符串的尾部 bool endWith( const char * str, const char * tail ) { //待完成 } //判断是否为nullptr bool isNull(const char * str) { //待完成 } //为nullptr或空字符串或多个空格或Tab时,返回true, 否则返回false bool isEmpty(const char * str) { //待完成 }
好的,我明白了。以下是实现这四个函数的代码:
```c++
#include <cstring> // 包含字符串操作函数的头文件
#include <cctype> // 包含字符类型判断函数的头文件
bool startWith(const char* str, const char* head) {
return strncmp(str, head, strlen(head)) == 0;
}
bool endWith(const char* str, const char* tail) {
int len1 = strlen(str);
int len2 = strlen(tail);
if (len1 < len2) return false;
return strncmp(str + len1 - len2, tail, len2) == 0;
}
bool isNull(const char* str) {
return str == nullptr;
}
bool isEmpty(const char* str) {
if (str == nullptr) return true; // 空指针
while (isspace(*str)) str++; // 跳过前面的空格和Tab
return *str == '\0'; // 判断是否为空字符串
}
```
这里用到了 C++ 标准库中的 `strncmp` 函数来比较字符串的前缀和后缀,用到了 `strlen` 函数来获取字符串的长度,用到了 `isspace` 函数来判断字符是否为空格或Tab。
vector<cstring> 转 char**
`vector<cstring>` 是 C++ 中的一个容器,用于存储 `const char *` 类型(指向常量字符串的指针)的对象。当你想要将这个 `vector` 转换成 `char **` 类型(指向字符数组的指针的指针),可以按以下步骤操作:
1. 首先,你需要创建一个大小足够的 `char **` 数组来保存所有的字符串。
```cpp
std::vector<const char*> cStrings;
// ...(假设已经填充了一些字符串)
size_t size = cStrings.size();
char **ptrArray = new char*[size];
```
2. 然后遍历 `vector`,为每个元素分配一个新的 `char *` 并复制数据。
```cpp
for (size_t i = 0; i < size; ++i) {
ptrArray[i] = new char[strlen(cStrings[i]) + 1]; // 加1防止'\0'
strcpy(ptrArray[i], cStrings[i]);
}
```
3. 当不再需要这些动态分配的空间时,记得释放它们以避免内存泄漏。
```cpp
for (size_t i = 0; i < size; ++i) {
delete[] ptrArray[i];
}
delete[] ptrArray;
```
阅读全文