C ++(2012 Express)CString问题

时间:2012-12-24 09:12:22

标签: c++ visual-studio

  

可能重复:
  Use CString in console app when using VS Express

我对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;

4 个答案:

答案 0 :(得分:0)

它的年龄我没有使用MFC,所以我不能确定这个建议不会导致死路......

您需要自己编译MFC。 Here我找到了一些详细的建议。正如我所说,我现在不能尝试。

HTH

答案 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参考都是一个不同的问题...