我对C严重生锈,自从我上次使用它以来似乎有很多改变。
我正在尝试构建一个用VS2008编写的程序,只有我正在使用2012 Express。所以,当然,错误无处不在。
列表中的第一个是CString。继续作为未声明的标识符出现。据我所知,该库不包含在VS2012 Express中。所以我需要找到一个解决方法。到目前为止,谷歌给了我无法理解的结果(如上所述,我严重生锈)。
在下面的代码中,有人能给我一个更简单的CString替代方案吗?谢谢!
bool Decoder::decode(LPCWSTR theCaption, TABLE_SUMMARY& table)
{
// If the caption doesn't contain the word "You" return false
CString strCaption = theCaption;
if (-1 == strCaption.Find(L"You"))
return false;
答案 0 :(得分:0)
答案 1 :(得分:0)
#include <cwchar>
...
if (std::wcsstr(theCaption, L"You") == 0)
return false
答案 2 :(得分:0)
为什么不使用基本的CRT功能?
bool Decoder::decode(LPCWSTR theCaption, TABLE_SUMMARY& table)
{
if (wcsstr(theCaption, L"You") == NULL)
return false;
...
}
如果您需要不区分大小写,我建议执行此wcsistr。
答案 3 :(得分:0)
请参阅可替换MFC的WTL,或切换到STL,如果您只需要处理CString,则可以使用(例如)std :: string,添加接口中缺少的内容。
我认为最有趣的是CString 自动转换为ANSI程序的LPCSTR,或LPCWSTR转换为Unicode。
即。
之类的东西class CString : std::string {
public:
operator PCSTR() const { return c_str(); }
operator PCWSTR() const { return c_wstr(); }
};
可以解决您的直接问题(未经测试的代码......)
请注意,此类隐式运算符允许将CString 直接传递给WINAPI。
如果你将它与智能副本分配(写入时)配对,那MFC实现了(抱歉我不确定std :: string那个),你会欣赏CString。
你需要实现任何缺少的CString成员(如果有限,应该相当容易......)
当然,任何其他MFC参考都是一个不同的问题...