首页 > 解决方案 > C ++:如何在“for”循环中为一行文本动态添加后缀以创建先前声明的变量

问题描述

有谁知道如何将变量值添加到 for 循环中的一行文本以检查该变量?

for (int i = 0; i < 16; i++)
{
    rendTarX = BUTTONCOLOR(i); //
    rendTarY = BUTTONCOLOR(i);
    writeUserInterfaceToBuffer(consoleBuffer, BUTTONCOLOR(i).chars, 
                               BUTTONCOLO(i)0.colors, BUTTONCOLOR(i).nWidth, 
                               BUTTONCOLOR(i).nHeight, rendTarX, rendTarY, 
                               userColor);
}

我总共有 16 个按钮,想将它们写入屏幕缓冲区

它们的名称都以“BUTTONCOLOR”开头,并以“0”和“15”之间的数字结尾。

提前感谢您的任何回复。

标签: c++for-loop

解决方案


最好的方法可能是使用数组并通过索引访问它:

std::array<int, 16> BUTTONCOLORS = {BUTTONCOLORSX00, BUTTONCOLORSX01, ..., BUTTONCOLORSX15};

BUTTONCOLORS[i]会给你你想要的变量。

如果您真的想连接变量,那么您可以使用宏:

#define _BUTTONCOLORS(n) BUTTONCOLORSX##n
#define BUTTONCOLORS(n) _BUTTONCOLORS(n)

BUTTONCOLORS(1)将在预处理器中解析为BUTTONCOLORSX1并将 BUTTONCOLORS(2)在预处理器中解析为 BUTTONCOLORSX2.

您将需要一个编译时循环来解析宏,因此您不能使用 for 循环。您也必须在宏中执行循环(因为一切都在预处理器阶段解决)。

话虽如此,我强烈建议使用数组而不是宏,因为它更安全、更易读。使用宏很少是一个好主意。


推荐阅读