【发布时间】:2017-02-01 14:00:38
【问题描述】:
我正在尝试编写将 const char 数组分配给动态分配的 const char 数组的代码。 我试着这样做
const char staticArray[4] = "abc";
const char * ptrDynamicArray;
ptrDynamicArray = new const char[4](staticArray);
但我收到一个错误(“数组新 [-fpermissive] 中的带括号的初始化程序”)。
我有两个问题:
我该如何解决 - 比如关闭它(我使用的是 Code::Blocks 16.01)?
我能否以其他方式初始化动态分配的 const char 数组?
【问题讨论】:
-
首先,更喜欢使用
std::string。要复制 C 风格的字符串,您需要strcpy或类似例程的服务。您的表达式new const char[4](staticArray);尝试用staticArray构造新创建的数组中的每个元素。并且不能使用char[4]类型构造char类型 -
数组应该是字符串吗?那为什么不用
std::string呢? -
最后我需要一个 const char* 来传递给 fstream
-
您确实知道流可以处理
std::string?<<的重载采用std::string参数。如果你使用例如read或write读取或写入原始数据,然后您可以轻松获取指向字符串对象中包含的数据的指针。这似乎是an XY problem,您可以在其中向我们寻求帮助以解决您未告诉我们的问题。
标签: c++ arrays dynamic codeblocks