C++ 我可以使用条件运算符初始化C样式的字符串文字吗?

C++ 我可以使用条件运算符初始化C样式的字符串文字吗?,c++,initialization,conditional-operator,C++,Initialization,Conditional Operator,我试图使用三元运算符(?:)将字符数组初始化为一个字符串或另一个字符串 char answ[]=ans>0?“安东”:“丹尼克”; 其中,ans只是先前获得的一个整数,我不断得到错误: initialization with '{...}' expected for aggregate object value of type "const char *" cannot be used to initialize an entity of type "char&

我试图使用三元运算符(
?:
)将字符数组初始化为一个字符串或另一个字符串

char answ[]=ans>0?“安东”:“丹尼克”;
其中,
ans
只是先前获得的一个整数,我不断得到错误:

initialization with '{...}' expected for aggregate object
value of type "const char *" cannot be used to initialize an entity of type "char"
是不是不能通过三元运算符初始化数组


我也试过:

charansw[]={ans>0?“Anton”:“Danik”};
是什么导致了错误:

initialization with '{...}' expected for aggregate object
value of type "const char *" cannot be used to initialize an entity of type "char"
是不是不能通过三元运算符初始化数组

事实上,你不能

在您的示例中,您不希望只使用数组。您需要字符串文字-一个特定的数组。不幸的是,编译器并没有将
answ
作为一个整体处理,因为您试图使用条件运算符进行初始化。编译器直接将其视为
char
s的数组

但是声明C字符串有不同的方法——使用
const
和指针

const char*answ=ans>0?“安东”:“丹尼克”;
这种方法的缺点是,
const
——您不能修改这个字符串

这就是为什么,如果你使用C++,你应该使用它的字符串-<代码> STD::String >:

std::string answ=ans>0?“安东”:“丹尼克”;

在C中,您可以执行以下操作:

charansw[6];
ans>0?strcpy(answ,Anton):strcpy(answ,Danik);
但在这一点上,三元运算符只是比正常的if-else更不详细,所以不要这样做

是不是不能通过三元运算符初始化数组

事实上,你不能

在您的示例中,您不希望只使用数组。您需要字符串文字-一个特定的数组。不幸的是,编译器并没有将
answ
作为一个整体处理,因为您试图使用条件运算符进行初始化。编译器直接将其视为
char
s的数组

但是声明C字符串有不同的方法——使用
const
和指针

const char*answ=ans>0?“安东”:“丹尼克”;
这种方法的缺点是,
const
——您不能修改这个字符串

这就是为什么,如果你使用C++,你应该使用它的字符串-<代码> STD::String >:

std::string answ=ans>0?“安东”:“丹尼克”;

在C中,您可以执行以下操作:

charansw[6];
ans>0?strcpy(answ,Anton):strcpy(answ,Danik);

但在这一点上,三元运算符比正常的if-else更为详细,所以不要这样做。

这是否回答了您的问题?这个答案是否回答了你的问题?