我开始编写一个翻译程序,它将使用并行数组来翻译文件上的文本字符串。翻译的语言是猪拉丁语。我创建了一个文本文件,用作猪拉丁语到英语词典。我不想使用任何二维数组;我希望将数组保持在一维中。基本上,我想读取一个用PigLatin编写的文本文件,使用我创建的字典,我想在命令行上将翻译输出到英文。
我的伪代码想法是:
English
我正在考虑使用一个平行数组,一个包含英文翻译的单词,另一个包含猪拉丁单词。
我想知道如何使用C++中的数组操作字符串?
谢谢。
发布于 2009-11-02 20:58:47
声明字符串数组很容易,就像声明其他任何东西的数组一样。
const int MaxWords = 100;
std::string piglatin[MaxWords];这是一个由100个字符串对象组成的数组,该数组名为piglatin。字符串开始是空的。您可以像这样填充数组:
int numWords = 0;
std::ifstream input("piglatin.txt");
std::string line;
while (std::getline(input, line) && numWords < MaxWords) {
piglatin[numWords] = line;
++numWords;
}
if (numWords == MaxWords) {
std::cerr << "Too many words" << std::endl;
}我强烈建议您不要使用数组。而是使用容器对象,例如std::vector或std::deque。这样,您就可以加载文件的内容,而不必事先知道文件有多大。使用上面的示例声明,您需要确保文件中的条目不超过100个,如果少于100个,则需要跟踪数组中有多少项是有效的。
std::vector<std::string> piglatin;
std::ifstream input("piglatin.txt");
std::string line;
while (std::getline(input, line)) {
piglatin.push_back(line);
}发布于 2009-11-02 20:57:53
如果文件总是以一个方向翻译(例如PigLatin ->英语),那么使用std::map将一个字符串映射到另一个字符串将更容易,效率更高:
std::map<std::string, std::string> dictionary;
dictionary["ashtray"] = "trash";
dictionary["underplay"] = "plunder";得到翻译的单词,只需使用dictionary[]查找(例如,std::cout << dictionary["upidstay"] << std::endl;)
发布于 2009-11-02 20:54:45
猪拉丁语可以即时翻译。
只需在每个单词的第一个元音之前分割单词,就不需要字典文件了。然后将第二部分与第一部分连接起来,用'-‘分隔,并在末尾添加"ay“。
除非你想使用字典文件?
https://stackoverflow.com/questions/1663615
复制相似问题