如何使用字符串字面量初始化 const char []

3

我想要做以下事情:

const char errorMsg [64] ( useApple ? "Error Msg Apple\n" : "Error Msg Bee\n" );
MyMethod ( errorMsg );

对于具有以下方法签名的方法:

MyMethod(const char* errorMessageInput );

我有一个接受const char*参数的方法,我想在把它传入之前创建一个本地变量。我不能分配动态内存,但我可以使用比所需更大的数组(在这种情况下,我将其设置为64)。如何使此代码编译?


5
如果使用苹果,const char* errorMsg = "Error Msg Apple\n";否则,const char* errorMsg = "Error Msg Bee\n" - paddy
甚至只需要:MyMethod ( useApple ? "错误信息 Apple\n" : "错误信息 Bee\n" ); - Remy Lebeau
请优先使用std::stringstd::string_view而不是char* - sp2danny
1个回答

5

你可以使用指针来替代数组,例如

const char *errorMsg = useApple ? "Error Msg Apple\n" : "Error Msg Bee\n";

实际上,如果方法参数的类型是const char *,则不需要声明一个常量数组。
例如,您可以编写:
#include <cstring>

//...


char errorMsg [64];

strcpy( errorMsg, useApple ? "Error Msg Apple\n" : "Error Msg Bee\n" );

然后将该数组作为方法的参数使用。


4
@zDoctor:这并不在堆栈上创建一个数组。 该代码将“Error Msg Apple \n”和“Error Msg Bee \n”作为二进制文件的一部分,并在堆栈上创建了一个指向其中一个的指针。 - Mooing Duck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接