c ++数组中的北约字母表

时间:2017-04-18 17:10:18

标签: c++ arrays string for-loop alphabet

我必须将大写字符转换为其北约语音字母对应字符。使用两个数组。

letters.txt是一个带字母A-Z

的文本文件

words.txt是一个带有北约语音字母Alpha-Zulu的文本文件

(例如:A = Alpha,B = Bravo ......)

我遇到的问题是,每次转换一封信时,只会打印祖鲁语。

我该如何添加或更改此程序以便正确转换?

这是代码

 #include <iostream>
 #include <string>
 #include <fstream>
 #include <iomanip>
 using namespace std;

 int main()
{

ifstream inputFile;
inputFile.open("words.txt");
string word;

while (inputFile >> word)
{
}


inputFile.open("letters.txt");
char letter;

while (inputFile >> letter)
{
}

char choice;
char letter2;
char Alpha[26]={letter};
string Words[26]={word};
    do
{

    cout<<"\nPlease enter a letter"<<endl;
    cout<<"Letter: ";
    cin>>letter2;

for(int count=0; count < 26; count++)
    {

    cout<< Words[count];

    }

    cout<<"\nDo you want to run this program again? <y/n>"<<endl;
    cin>>choice;

}
    while(choice=='y' || choice=='Y');

return 0;
}

1 个答案:

答案 0 :(得分:1)

你需要适当的容器来存放你的字母和单词。

现在您正在从文件中读取它们,将每个单词/字母放入变量(变量名为单词字母)。但是每个单词/字母都会覆盖前一个单词/字母(这就是为什么你只看到最后一个单词, Zulu )。

要实际读取并按住它们,您需要一个矢量或数组。

单词示例(字母相同):

std::vector<std::string> words;
words.reserve(26); // you know you need 26 words, reserve memory in advance
string word;

while (inputFile >> word)
{
  words.push_back(word);
}

就像这样,你的所有单词都在你的容器中单词

然后继续你的算法; - )