C++ で変数を使用できるメッセージ ルックアップ テーブルを作成する簡単な方法はありますか。
たとえば、C では次のようなものを使用できます。
const char* transaction_messages[] = {
"UNAUTHORIZED",
"UNKNOWN_ORDER",
"UNKNOWN_DEALER",
"UNKNOWN_COMMODITY",
"INVALID_MESSAGE",
"BOUGHT %d %s @ %f.1 FROM %s", //amount, commodity, price, dealer
"SOLD %d %s @ %f.1 FROM %s", //amount, commodity, price, dealer
"%d HAS BEEN FILLED", //order id
"%d HAS BEEN REVOKED", //order id
"%d %s %s %s %d %f.1 HAS BEEN POSTED", //order id, dealer, side, commodity, amount, price
"%d %s %s %s %d %f.1" //order id, dealer, side, commodity, amount, price
};
そして、次のように関数で使用します。
void myfunction(int amount, char* commodity, double price, char* dealer){
char *msg = transaction_message[6];
printf(msg, amount, commodity, price, dealer);
}
同じことが次のように見える << 演算子で何かをする必要があるのではなく、ostream で同じことができるようにしたいです。
ostream << "BOUGHT" << amount << " " << commodity << " @ " << price << " FROM " << dealer;
私が今これを行うと考えることができる唯一の方法は、文字列を返す一連のインライン関数を用意し、char* テーブルの代わりにインライン関数を検索する関数テーブルを用意することです。もっと簡単な方法があるはずです。