C++字符串字符**翻译
C++ string char** translation
如何使用char**生成n个字符串的数组?
char** lit;
*lit = (char*)calloc(this->nr_param, sizeof(char*));
for(int i = 0; i < this->nr_param; i++)
lit[i] = (char*) calloc(this->nr_param, sizeof(char));
这是路吗?如果是,我如何访问元素?假设我的数组将包含以下元素:aaab,abba,baab;
我想要这种结构:
lit[0] = "aaab";
lit[1] = "abba";
lit[2] = "baab";
我怎么申报没关系?
像这样:
// allocate memory for n char pointers dynamically.
char ** lit = static_cast<char**>(::operator new(n * sizeof(char*)));
for (unsigned int i = 0; i != n; ++i)
{
lit[i] = static_cast<char*>(::operator new(length_of_string_i)); // #1
// populate lit[i] with data
}
您需要某种方法来确定第i
个字符串的长度,需要将其适当地粘贴到标记为#1的行中。注意sizeof(char) == 1
,所以您不需要在内部分配中乘以任何东西。(如果您愿意,可以使用std::malloc
而不是::operator new
,但您必须使用#include <cstdlib>
。)完成后不要忘记清理!
当然,这只是你所要求的文字翻译。在C++中,您通常更喜欢对象创建而不是原始内存分配,如下所示:
// construct n char pointers dynamically
char ** lit = new char*[n];
for (unsigned int i = 0; i != n; ++i)
{
lit[i] = new char[length_of_string_i];
// populate lit[i] with data
}
但你应该认真的永远不要使用数组new。这不是一个好的概念,也很少是好的C++。
所以,你根本不应该这样做,相反,你应该使用:
std::vector<std::string> lit(n);
您可以以类似的方式使用c++向量和字符串:
#include <vector>
#include <string>
#include <iostream>
int main() {
std::vector<std::string> lit;
lit.push_back("aaab");
lit.push_back("aab");
lit.push_back("aabb");
lit[0][0] = 'z';
std::cout << lit[0] << std::endl;
}
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 不同翻译单元中不可重载的非内联函数定义
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 比较字符数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 常量字符* 与C++的双重翻译问题
- C11 编译.翻译阶段 #1 和 #5.通用字符名称
- C++字符串字符**翻译
- C++编译.翻译阶段 #1.通用字符名称