【发布时间】:2011-12-08 10:21:40
【问题描述】:
我有一个包含前 1000 个婴儿名字的文件。我想向用户询问姓名...搜索文件...并告诉用户该名称对于男孩名字的排名以及对于女孩名字的排名。如果它不在男孩名或女孩名中,它会告诉用户它不在该性别的流行名字中。
文件的布局如下:
Rank Boy-Names Girl-Names
1 Jacob Emily
2 Michael Emma
.
.
.
输入Michael 的期望输出为:
Michael 在男孩名字中排名第二。
如果迈克尔不是女孩名字,它应该说:
迈克尔不是最受欢迎的女孩名字之一
如果是的话,它会说:
Micheal 是女孩名字中的(排名)
到目前为止我的代码如下..我似乎无法弄清楚。感谢您的帮助。
#include <iostream>
#include <fstream>
#include <string>
#include <cctype>
using namespace std;
void find_name(string name);
int main(int argc, char **argv)
{
string name;
cout << "Please enter a baby name to search for:\n";
cin >> name;
/*while(!(cin>>name))
{
cout << "Please enter a baby name to search for:\n";
cin >> name;
}*/
find_name(name);
cin.get();
cin.get();
return 0;
}
void find_name(string name)
{
ifstream input;
int line = 0;
string line1 = " ";
int rank;
string boy_name = "";
string girl_name = "";
input.open("/<path>/babynames2004.rtf");
if (!input)
{
cout << "Unable to open file\n";
exit(1);
}
while(input.good())
{
while(getline(input,line1))
{
input >> rank >> boy_name >> girl_name;
if (boy_name == name)
{
cout << name << " is ranked " << rank << " among boy names\n";
}
else
{
cout << name << " is not among the popular boy names\n";
}
if (girl_name == name)
{
cout << name << " is ranked " << rank << " among girl names\n";
}
else
{
cout << name << " is not among the popular girl names\n";
}
}
}
input.close();
}
【问题讨论】:
-
这段代码不起作用吗?它是如何失败的?它有什么作用?你有什么问题?
-
它总是输出:
不在流行的男孩名字中。然后在下一行说 不在流行的女孩名字中。 -
嗯,是你在文件中输入的名字吗?如果不是,那么输出就是我对您的代码的期望...
-
与您的问题无关,但在 C++ 中,您通常在使用变量之前声明变量,而不是全部在函数的顶部。
-
你只是循环遍历文件中的所有行,有什么问题?
标签: c++ iostream string-matching