错误C2039 - 不是std :: basic_string

时间:2015-07-19 20:29:54

标签: c++ visual-studio-2012

请注意,我确实添加了一个头文件strutils.h,我也在项目中复制了这个文件。 strutils.cpp已添加到源文件中,也已复制到Project文件夹中。

**我收到的错误如下:错误C2039:'ToLower':不是'std :: basic_string< _Elem,_Traits,_Alloc>'的成员 **

我在Astrachan出版的“计算机科学挂毯”一书之后开始编写代码,我确实多次检查了这本书,但没有结果。 (库strutils确实包含ToLower()函数)

我觉得我错过了很简单的事情。

以下是我的代码。

    #ifndef _STRUTILS_H
    #define _STRUTILS_H

    #include <iostream>
    #include <string>
    #include "strutils.h"
    using namespace std;

    int main()
    {
         string boot = "Drimmnal";
         boot.ToLower();

         cin.ignore();
         cin.get();
         return 0;
    }

     #endif 

1 个答案:

答案 0 :(得分:2)

您尝试使用的功能是标准库std::string类的成员函数,因此您无法通过说boot.ToLower()来调用它。该语法保留给成员函数。

此功能在您图书的支持材料中提供。它的签名为void ToLower(string & s);。这是一个免费的函数,它通过引用获取std::string ,并且我认为,它会更改字符串。您将要像任何其他免费函数一样调用它并将其传递给std::string变量。

变化:

boot.ToLower();

要:

ToLower(boot);

此外,您还要从源代码中删除以下行:

#ifndef _STRUTILS_H
#define _STRUTILS_H

#endif

这些行包括来自strutils.h文件的警卫,我不确定它们是否在您的源文件中。