C++(2012 Express)cScript问题

C++(2012 Express)cScript问题,c++,visual-studio,C++,Visual Studio,可能重复: 我对C非常生疏,自从上次使用它以来,似乎有很多变化 我正在尝试构建一个用VS2008编写的程序,但我使用的是2012 Express。因此,错误自然无处不在 列表上的第一个是CString。一直作为未声明的标识符出现。据我所知,VS2012 Express中不包含该库。所以我需要找到一个解决办法。到目前为止,谷歌给我的结果我无法理解,我严重生锈 在下面的代码中,有谁能给我一个更简单的CString替代方案吗?谢谢 bool Decoder::decode(LPCWSTR theCa

可能重复:

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

我已经很久没有使用MFC了,所以我不能确定这个建议不会导致死路一条

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


为什么不使用基本的CRT功能呢

bool Decoder::decode(LPCWSTR theCaption, TABLE_SUMMARY& table)
{
    if (wcsstr(theCaption, L"You") == NULL)
        return false;
    ...
}
如果您需要不区分大小写,我建议您使用这种实现。

请参阅它可以替换MFC,或者,切换到STL,如果您只需要处理CString,您可以使用例如std::string,添加接口中缺少的内容

我认为最有趣的是CString自动转换为用于ANSI程序的LPCSTR,或用于Unicode的LPCWSTR

例如

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参考都是另一个问题…

试试这个?:呃。。。C中没有cStand,所以这不是生锈,你在看C++,它是一种不同的语言,语法类似。我试了从PruteDeSLIP中的STDStand,但是没有运气。我将StdString.h文件添加到我的项目中,但仍然无法打开类型库文件StdString。尝试导入并包含。这对我来说已经很长时间了,令人沮丧!CString是MFC和ATL的字符串类型,是visualstudio的主要类库。两者都不是由Express edition提供的,您只有在购买RTM许可证时才能获得它们。Express版是编写自己的C++代码的训练轮。
class CString : std::string {
public:

  operator PCSTR() const { return c_str(); }
  operator PCWSTR() const { return c_wstr(); }
};