将音乐的子字符串从 BASIC 转换为 C++

Converting substrings of music from BASIC to C++

本文关键字:BASIC 转换 C++ 字符串 音乐      更新时间:2023-10-16

在许多版本的 Basic 中,音乐可以使用语句 PLAY 播放。它接受参数、音符、八度音阶等,但也接受子字符串。例如,A$="BCD": B$="FDE": PLAY "XA$;O3XB$;"等效于PLAY "BCDO3FDE"

我想在C++做同样的事情。我知道这很困难,因为 BASIC 被解释和C++编译,但有办法吗?

更准确地说,我已经有一个函数PlayString(AnsiString ss),它能够演奏由音符(例如"BCD"(、八度音阶(前缀 O 加数字,例如"O2"(、音符长度(前缀 L 加数字,例如"L4"(组成的字符串,因此要演奏的字符串可以是"BCDO3FDE"(同上(。

我想在其中添加播放子字符串所需的代码,例如前缀 X,以便以下行中的代码可以工作:

AnsiString aa="BCD", bb="FDE";PlayString("Xaa;O3Xbb;");

并等效于

PlayString("BCDO3FDE");

想法,有人吗?

如前所述,这是行不通的。原因正是您所怀疑的:C++已编译。变量名称在运行时不存在。但PlayString仅在运行时解释其参数。你需要

PlayString(aa+"O3"+bb);