string跟wstring?在Windows API中的应用

string和wstring?在Windows API中的应用?
在windows的API接口中的参数好多都是用的const char*或者const wchar*,这样我可以写一个字符数组
TCHAR a[]="Hello!";
就可以应付了,这明显是C的写法。

但是用C++还要考虑有没有使用UNICODE而采用string还是wstring,没有通用的办法吗?难道要自己去定义一个通用的‘tstring’吗?C++没有提供这种解决办法吗办法吗?

而且用到这种API接口的时候参数还要用string的成员函数c_str()把原来的string类型转换为C风格的字符串才能用,感觉绕了好大圈子,难道C++不适合写Windows API的程序吗?

不知道我又没有描述清楚,小菜求教各位大侠了!谢谢!

积分不多还请见谅啊!

------解决方案--------------------
个人觉得TCHAR是windows平台下的重定义类型,应该紧紧与windows API联系在一起。对于独立于平台的代码如库、算法等等,我还是更喜欢使用string、wstring之类的C++内置内容。

C/C++ code
#include <string>

#if defined(UNICODE) || defined(_UNICODE)
#define cpp_char wchar_t
#define cpp_string std::wstring
#else
#define cpp_char char
#define cpp_string std::string
#endif

------解决方案--------------------
我觉得 楼主和我一样, 在面对windows开发的时候, 很想用捍卫C++的主权地位。只可惜,微软用C++写了一个该死的MFC产品,我个人觉得影响了很多人,甚至有人把C++理解成了MFC。 对于字符串,windows核心编程 第二章 也主张ANSI/UNICODE 的 编码风格, 就是_t系列的宏函数之类的东西 包括你的main。假如,你自己想坚持用string wstring 你可以借鉴3楼