c++ - 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”之间的数字结尾。
提前感谢您的任何回复。
解决方案
最好的方法可能是使用数组并通过索引访问它:
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 循环。您也必须在宏中执行循环(因为一切都在预处理器阶段解决)。
话虽如此,我强烈建议使用数组而不是宏,因为它更安全、更易读。使用宏很少是一个好主意。
推荐阅读
- python - 为什么在子进程中放置 / 和 " 不起作用?
- algorithm - 找到一个点在内部并且最接近的球体的最快方法
- c# - 我可以重复使用 IQueryable
.Select() 语句? - azure-active-directory - Office 365 管理 API 活动/源/订阅 API 返回 InternalServerError
- android - 基于播放服务测量的请求,有多个版本
- javascript - 将鼠标悬停在多线图上时没有工具提示
- python - 如何在熊猫中跨两列逐行计算 pct_change()?
- pandas - Pandas - 从具有开始和结束日期和时间的事件数据帧创建一个 10 分钟的时间序列
- ejabberd - ejabberd 阻止来自后端的通信
- jquery - jquery ajax重新加载页面的一部分返回未定义