我有以下方法签名:
int get_name(char* &name_out);
我想做的是为 name_out
分配 name
大小的内存,然后复制 name
的内容code> 到 name_out
。
还是改成:
int get_name(char &name_out[], int size);
并允许函数的用户首先分配和跟踪内存,并在给定数组的大小不足以包含字符串时返回错误?
我唯一不喜欢的是它要求 get_name()
函数的用户了解名称字符串的长度。
我觉得有两个函数 int get_name_length();
和 get_name(char* name_out);
由于这是一个编程任务,所以有规定:
- 不允许使用字符串类。
- 必须使用 C 风格的字符串。
- 不能使用载体。
- 该函数必须返回一个 int 以指示错误。
- 不允许异常处理。
谢谢。
最佳答案
如果我理解正确的话,您要做的是为“strcpy”实现一个变体。
主要区别在于您将分配责任传递给复制函数,而“strcpy”将其留给用户。如果这是生产代码,那么我建议遵循业界习惯的“strcpy”方法。
如果它只是为了玩,那么用一个函数包装 strcpy 进行分配并坚持 strcpy 的接口(interface)。
关于c++ - 接收指向 C 风格字符串的指针作为参数并能够分配内存或修改它的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28208077/