C++ 如何在c++;

C++ 如何在c++;,c++,C++,我正在尝试制作一个程序来打印一个数组的名称,这个数组代表国际象棋棋盘的第一行。我的尝试是使用以下程序,但我唯一能实现的是打印数字:( #包括 使用名称空间std; void main() 枚举π介子//以π介子给出名称 { 塔=1, 马, 官员 王子们, 国王}; 国际象棋[0][8]={塔,马,军官,王子,国王,军官,马,塔}; //将每个坐标的名称放入数组(如上)。 cout无法打印出枚举的标识符 您需要创建一个不同的函数,该函数将枚举作为输入参数,并返回一个带有所需名称的std::字符串

我正在尝试制作一个程序来打印一个数组的名称,这个数组代表国际象棋棋盘的第一行。我的尝试是使用以下程序,但我唯一能实现的是打印数字:(

#包括
使用名称空间std;
void main()
枚举π介子//以π介子给出名称
{ 
塔=1,
马,
官员
王子们,
国王};
国际象棋[0][8]={塔,马,军官,王子,国王,军官,马,塔};
//将每个坐标的名称放入数组(如上)。

cout无法打印出枚举的标识符

您需要创建一个不同的函数,该函数将枚举作为输入参数,并返回一个带有所需名称的std::字符串。例如,如果您传递它,它将返回“Tower”。如果您传递它,它将返回“Horse”。等等


提示:如图所示,在函数体中使用
switch
语句。

您需要编写一个函数,该函数接受类型为
Chess
的参数并返回一个字符串。下面是一个可行的函数:

const char *chessPieceName(Chess piece)
{
    switch(piece) {
        case Tower:
            return "Tower";
            break;
        case Horse:
            return "Horse";
            break;
        // etc.
        default:
            return "Not a valid piece";
            break;
    }
}
您可以从
main
调用然后调用此函数:

cout << " in this place the pion that is placed is the  " << chessPieceName(chess[0][1]) << endl;

cout您可以有一个
translator
函数,它接受
int
值并将其转换为可打印的字符串值:

string translate(int piecenum){
    string [5] ref = { "Tower", "Horse", "Officer", "Princes" "King"}
    return ref[piecenum];
}

可以使用<代码> cOUT> p>打印出来,要么使用C++而不是C++,要么定义自己的象棋图形名称数组。例如:

   enum pions // giving the names in pions 
   { 
   Tower = 0 , // <== I prefer to use 0 instead of 1
   Horse ,
   Officer ,
   Princes ,
   King };


const char *name = { "Tower", "Horse", "Officer", "Princes", "King" };

//...

for ( int i : chess[0] ) std::cout << name[i] << std::endl; 
enumπ介子//给出π介子中的名称
{ 

Tower=0,//您的第一个问题是您有一个整数数组,而不是您所称的字符串或π介子
生成一个大小为零的数组,我猜这不是您想要的。可能的重复请注意,编译器甚至不会发出错误地将骑士称为马的警告。;-)使用switch语句而不是名称数组不是一个好主意。谢谢,这真的很有帮助!!我会尝试将它与Daniel的答案结合起来!@vladfrommosco使用switch语句的优点是,即使
enum
的值被定义为默认值以外的值,它也可以工作。godel9这是一个非常复杂的问题ad风格的编程。例如,枚举可以更改,但您忘记更改函数。或者您将更改函数,但因为它包含的代码太多,您可以忽略break语句等等。首先,代码太多,很难支持it@VladfromMoscow这没有任何意义。也许对你来说它是oesn没有任何意义。对我来说,当你在某个函数体中硬编码一组文字时,这是一种糟糕的编程风格。@Vlad这与switch语句完全无关。你可以在单独的位置定义字符串常量,然后在switch语句的每个部分使用它们。在生产代码中,我使用s将字符串常量隔离在适当的文本模块中,以便于国际化,但在SO答案中,我只能建议OP的正确答案,他会以他最喜欢的方式处理字符串。我的答案是正确的,因为它将为OP的问题提供正确的解决方案。您不喜欢其样式的事实是ot与它的正确性有关。为什么按
int
而不是按它的实际类型取值?因为OP将
chess
初始化为type
int
(尽管错误)
   enum pions // giving the names in pions 
   { 
   Tower = 0 , // <== I prefer to use 0 instead of 1
   Horse ,
   Officer ,
   Princes ,
   King };


const char *name = { "Tower", "Horse", "Officer", "Princes", "King" };

//...

for ( int i : chess[0] ) std::cout << name[i] << std::endl;