无法解析类型 'string'

Type 'string' could not be resolved

我是 C++ 编码的新手,我正在尝试从另一个文件调用一个函数来检查包含文本文件的字符串是否由字母字符组成,但由于某种原因它不起作用。

我的 ap.cpp 文件中出现 错误

参数无效 ' 候选人是: 布尔 is_alpha(?) ' 和

‘is_alpha’不能作为函数使用

还有 我的头文件中的错误

无法解析类型 'string'

我的代码:

AP.cpp

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

int main () {
  string line;
  string textFile;
  ifstream myfile ("encrypted_text");
  if (myfile.is_open())
  {
    while ( getline (myfile,line) )
    {
        textFile += line;
    }
    myfile.close();
  }

  else cout << "Unable to open file";

  bool check = is_alpha(textFile);
  if (check){
      cout << "true";
  } else cout << "false";

  return 0;
}

checkFunctions.cpp

#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
#include "functions.h"
using namespace std;

bool is_alpha (string str) {
    for(int i=0; i < str.size(); i++)
    {
        if( !isalpha(str[i]) || !isspace(str[i]))
        {
            return true;
        }
    }
    return false;
}

functions.h

#ifndef FUNCTIONS_H_
#define FUNCTIONS_H_
#include <string>

bool is_alpha(string str);



#endif /* FUNCTIONS_H_ */

最好不要使用 using namespace std;,直到您对语言及其含义有适当的理解。如果你想知道 using namespace 的作用是什么,它基本上设置命名空间中的内容并将其放入全局命名空间(其中你不需要指定它来自哪里,在这个它的 std,调用方式为std::).

错误是因为编译器不知道bool is_alpha(string str);中的string是从哪里来的。因此,要解决此问题,请考虑我的第一个建议,您可以像这样指定它的来源:bool is_alpha(std::string str);.

此外,您不需要在源文件中再次添加头文件中包含的库。这意味着您可以从 AP.cppcheckFunctions.cpp.

中删除 #include <string>

有关头文件的更多信息: