c++ 翻译程序

umuewwlo  于 2022-12-05  发布在  其他
关注(0)|答案(3)|浏览(236)

我开始写一个翻译程序,它将使用并行数组翻译一个文件中的一串文本。要翻译的语言是Pig拉丁语。我创建了一个文本文件,用作Pig拉丁语到英语的字典。我不想使用任何二维数组;我想保持一维数组,基本上我想读一个用PigLatin写的文本文件,用我创建的字典,我想在命令行上输出翻译成英语。
我的伪代码想法是:

  • 打开词典文本文件。
  • 询问用户要翻译成英语的PigLatin文本文件的名称
  • 在用户的文本文件中搜索每个单词,并与词典进行比较,然后相应地翻译该单词。继续搜索,直到没有更多的单词需要翻译。
  • 在命令行屏幕上显示翻译的单词。

我在考虑使用一个并行数组,一个包含英语翻译的单词,另一个包含Pig拉丁语单词。
我想知道如何在C++中使用数组来操作字符串?

  • 谢谢-谢谢
brccelvz

brccelvz1#

如果文件总是在一个方向上翻译(例如PigLatin -〉英语),那么使用std::map将一个字符串Map到另一个字符串会更容易、更有效:

std::map<std::string, std::string> dictionary;
dictionary["ashtray"] = "trash";
dictionary["underplay"] = "plunder";

并获得翻译的单词,只需使用dictionary[]进行查找(例如std::cout << dictionary["upidstay"] << std::endl;

lsmd5eda

lsmd5eda2#

Pig拉丁语可以在飞行中翻译。
只需将每个单词的第一个元音之前的单词分开,你就不需要词典文件了。然后将第二部分与第一部分连接起来,用"-“分隔,并在最后加上“ay”。
除非您 * 想要 * 使用字典文件?

nnt7mjpx

nnt7mjpx3#

声明字符串数组很容易,就像声明其他任何数组一样。

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::vectorstd::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);
}

相关问题