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