3

我做了一本字典。我的目标是让用户输入新词并定义它们。

我想我已经把“定义词”的部分写下来了,其余的都写下来了。我在下面写了一个我正在寻找的例子。我不希望有人为我做这件事;我只是想知道是否有办法做到这一点以及我可以在哪里了解更多信息。

现在,我正在使用 C++ for Dummies 和 Sam 的 Teach Yourself For Teachers。

string newword
string word

cout << "Please enter a word" >> endl;
cin >> word;
if (word == newword)
{
    create string <newword>; // Which would make the following
                             // source code appear without
                             // actually typing anything new
                             // into the source code.
}  
string newword
string word
string word2 // which would make this happen

cout << "Please enter a word" >> endl;
cin >> word;
if (word == newword)
{
    create string <newword> 
}
4

2 回答 2

3

我会使用std::map,因为它是一个字典样式的容器。map容器非常适合这种情况,您可以提供唯一的键来匹配其他数据。由于典型的字典中每个单词只有一个条目,因此这是完美的。

typedef 允许我们用名称定义类型。这在这里很有帮助,因为我们不必std::map<std::string, std::string>一遍又一遍地输入。想象一下,每次你看到Dictionary,它都替换为std::map<std::string, std::string>

// Map template requires 2 types, Key type and Value type.
// In our case, they are both strings.
typedef std::map<std::string, std::string> Dictionary;
Dictionary myDict;

然后我会要求用户输入条目,然后要求他们定义他们的条目。

std::string word;
std::cout << "What word would you like added to the dictionary?" << std::endl;
std::cin >> word;

std::string definition;
std::cout << "Please define the word " << word << std::endl;
std::cin >> definitiion;

下一步只需将单词及其定义插入字典即可。使用[]地图上的运算符,我们替换提供的 key 已经存在的任何条目word。如果它不存在,它将作为新条目插入。请注意,任何先前定义的同名单词现在都将具有新定义!

myDict[word] = definition;

运行它会产生类似于:

>> What word would you like added to the dictionary?
>> Map
>> Please define the word Map
>> Helps you find things

访问地图中的定义现在很简单:

myDict["Map"]; // Retrieves the string "Helps you find things"
于 2012-09-19T02:37:20.310 回答
1

编辑:我的回答只告诉你如何建立一个没有定义的单词列表。希望它会打开一些精神之门,但要实现为每个单词附加定义的主要目标,您需要使用 amap而不是 a vector,正如Aesthete 的回答所示。

您需要的是一个包含字符串集合的变量。最容易使用和最常用的一种是向量:

// At the top of your program
#include <vector>

...

vector<string> words;

...

cout << "Please enter a word" << endl;
cin >> word;
words.push_back(word);     // This adds word to the end of the vector.

向量的行为与数组非常相似,如果您有一个名为 的向量words,您可以使用以下语法访问第 (i+1) 个元素words[i]

cout << "The 3rd word is " << words[2] << endl;

您可以用2其他更复杂的表达式替换上面的表达式,包括依赖变量的表达式。这使您可以执行诸如列出所有单词之类的操作。

for (int i = 0; i < words.size(); ++i) {
    cout << "Word " << (i + 1) << " is " << words[i] << endl;
}

等等

于 2012-09-19T02:32:48.890 回答