char, wchar_t与STL的字符串格式化format
最近一直在写序列化类,希望把一些游戏过程中的场景数据信息存储到硬盘。因为需要处理的数据很多,所以我写了一个工具类,其中包括字符串的序列化,问题来了: 公司原先的代码参差不齐,有使用AString的(使用ANSI char作为字符单元,相当于std::string),也有考虑到unicode问题而采用AWString的(使用wchar_t作为字符单元,相当于std::wstring),同时考虑到根据编译环境自动视别的问题,也定义有一个宏ACString,即:如果定义有UNICODE环境变量,则自动替换为AWString,否则使用AString。好吧,自作聪明的我使用了ACString来写工具函数,测试时没有任何问题,但一旦加入到真正的运行环境中就会出现“把const char*转化为bool,性能警告”的错误,几经检查,发现在游戏环境下,传入的参数是AString类型,而我用的ACString则被自动转化成了AWString,找不到参数匹配的,所以只有默认转化了。 看来,解决办法只能是同时提供AString与AWString两种类型的工具函数,因为你不知道你的客户传给你的将是哪一种,除非大家都铁了心的一致使用ACString,然而在现实的编码中,这却是不切实际的。 这让我想起前两天为STL写的格式化函数(STL没有,只好自己写了-_-),当时我也想自作聪明的把std: