对于我尝试编写的程序,读入.txt文件,然后计算单词数(我使用map)。程序会提示用户输入要查找的单词,然后显示该单词在文件中的次数。我应该有一个包括"?"代替单词中的字母,并打印文件中的单词符合描述的次数。 "?"可以代表另一个字母或空格。我不知道如何使用它,任何帮助将不胜感激!
实施例: 请输入一个字:a ?? 单词并在文档中出现4次。单词在文档中出现1次。单词a在文档中出现一次
问号字符由用户输入,可代表任何其他字符。程序应该搜索文件,找到并计算适合的任何可能性。例如,如果用户输入了?d,则单词"和"可能是计算的可能性。
#include <iostream>
#include <map>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char *argv[]) {
if (argc != 2)
cout << "invalid usage" ;
//open file
ifstream infile;
infile.open(argv[1]);
//variables
map<string, unsigned int> wCount;
int count = 0;
int uCount = 0;
//lowercase
while (!infile.eof()) {
string text;
infile >> text;
for (int i=0; i < text.length(); i++) {
text[i] = tolower(text[i]);
}
//count words
if (wCount.find(text) == wCount.end()) {
wCount[text] = 1;
count++;
uCount++;
}
else {
wCount[text]++;
count++;
}
}
cout << "The total number of word found in the file was " << count << endl;
cout << "The number of unique words found was " << uCount << "." << endl;
cout << "Enter the word you want to find: " << "";
//find(infile, word);
string in = "";
getline(cin, in);
while(in != "EOF") {
cout << "The word " << in << " appears " << wCount[in] << " times in the file" << endl;
cout << "Please enter a word: " << "";
getline(cin, in);
}
return 0;
}
答案 0 :(得分:0)
我喜欢这些问题。它们在许多不同的计算机科学领域都有应用;特别是生物信息学。这应该让你开始。按照Galik的建议,您可以:
1)从字符串
中删除问号字符std::string strip_wild_card(const std::string &pattern) {
int q_index = pattern.find("?");
return pattern.substr(0, q_index);
}
2)在文本中查找模式的出现次数
bool wild_card_compare(const std::string &pattern, const std::string &text) {
//implement this
if(pattern is found in text)
return true
else
return false
}
提示:要检查这一点,我们可以使用STL中的find函数。希望这可以帮助。祝你好运!