C ++ TCHAR []到字符串

时间:2010-10-18 11:10:57

标签: c++ string tchar

我有这种方法接收TCHAR szFileName[]变量的路径,其中包含C:\app\...\Failed\

之类的内容

我想对它进行排序,以便我可以验证该路径上最后一个文件夹的名称是否实际上是“失败”

我认为使用这样的东西会起作用:

std::wstring Path = szFileName;

string dirpath2;
dirpath2 = Path.substr(0,5); 

但是我收到以下错误:

  

错误6错误C2679:二进制'=':否   运营商发现哪个需要   类型的右手操作数   '的std :: basic_string的< _Elem,_Traits,_AX>'   (或者没有可接受的   转化率)

毋庸置疑,我对C ++很陌生,而且我一直在寻找答案,但我没有任何运气,所以任何帮助都会受到赞赏:)

2 个答案:

答案 0 :(得分:7)

您要么始终使用wstring(宽字符变体)或string(“普通”变体)。

由于您获得TCHAR(可以是wchar_tchar,具体取决于编译器标志),因此要使用的相应类型为tstring ,但那不存在。但是,您可以为它定义typedef:

typedef std::basic_string<TCHAR> tstring;

现在,您可以始终对所有操作使用相同的字符串类型tstring

答案 1 :(得分:3)

dirpath2也必须是std::wstring。有两种方法可以在两者之间进行转换,但它们涉及更改字符编码,这似乎比您要求的更多。

我喜欢不使用TCHAR。今天,很少需要启用或禁用UNICODE宏并创建程序的ASCII和Unicode版本。只需始终使用wstringwchar_t以及以“W”结尾的Windows API函数。

如果您正在处理无法控制上述内容的事情,Konrad的typedef答案比我的更为实用。