我正在为我的c ++类编写代码。任务是从2个不同的txt文件中读取名称(已经在我的目录中),并查找用户搜索的字符串/名称是否与文件中已有的任何名称匹配。我的代码对我来说似乎很好,但是我的函数原型中出现一个错误,提示“未在此范围内声明字符串”。有什么办法吗?我的代码如下:
#include <fstream>
#include <string>
#include <vector>
void boysfunc(string&, string&);
void girlsfunc(string&, string&);
using namespace std;
int main()
{
vector<string> boysnames;
vector<string> girlsnames;
string boysname, girlsname;
ofstream outputFile;
cout << "Enter a boy's name, or N if you do not want to
enter a name: ";
cin >> boysname;
cout << "Enter a girl's name, or N if you do not want to
enter a name: ";
cin >> girlsname;
if (boysname != "N")
{
boysfunc(boysname, boysnames);
}
if (girlsname != "N")
{
girlsfunc(girlsname, girlsnames);
}
}
void boysfunc(string &boysname, string &boysnames)
{
outputFile.open("BoysNames.txt");
while(outputFile >> boysnames)
{
/*Declare local variable count to use as a counter*/
int count = 0;
if (boysnames(count) == boysname)
{
outputFile.close();
cout << "The name " << boysname << " is very
popular among boys.";
return;
}
else
{
count++;
}
}
}
void girlsfunc(string &girlsname, string &girlsnames)
{
outputFile.open("GirlsNames.txt");
while(outputFile >> girlsnames)
{
/*Declare local variable count to use as a counter*/
int count = 0;
if(girlsnames(count) == girlsname)
{
outputFile.close();
cout << "The name " << boysname << " is very
popular among girls.";
return;
}
else
{
count++;
}
}
}
答案 0 :(得分:1)
您需要在此处修复两个主要错误。
using namespace std;
之前省略std::
,则必须在使用字符串之前写string
。否则,您可以在函数声明中编写std::string&
。boysfunc()
和girlsfunc()
将vector<string>&
作为第二个参数,而您在函数的声明和定义中错误地提到了string&
。解决这个问题。答案 1 :(得分:0)
在此片段中
string s = "hello";
using namespace std;
编译器不知道类型string
。 using namespace std;
就是这样做的。它基本上将string
变成了std::string
。
您可以交换上面的两行,它将起作用,但是我强烈建议您在任何地方都明确说出std::string
。我确信您的IDE将使您轻松完成此操作。