C++ 翻译/音译问题

C++ 翻译/音译问题,c++,translation,transliteration,C++,Translation,Transliteration,我正在做一个翻译/音译程序,它阅读一个英语故事,并使用英语/精灵语词典将其翻译成精灵语。在下面显示的代码之后,我解释了我收到的错误 我有很多代码,我不确定是否应该全部发布,但我会发布我认为应该足够的代码。如果我的代码看起来很奇怪,我表示歉意,但我只是一个初学者 有一个主文件,一个头文件,其中包含两个类:翻译器和字典,还有一个cpp文件来实现类功能 我有一个构造器,它读取字典文件中的dictFileName,并将英语单词复制到英语单词中,将精灵单词复制到猫语单词中: Translator::Tra

我正在做一个翻译/音译程序,它阅读一个英语故事,并使用英语/精灵语词典将其翻译成精灵语。在下面显示的代码之后,我解释了我收到的错误

我有很多代码,我不确定是否应该全部发布,但我会发布我认为应该足够的代码。如果我的代码看起来很奇怪,我表示歉意,但我只是一个初学者

有一个文件,一个文件,其中包含两个类:翻译器字典,还有一个cpp文件来实现类功能

我有一个构造器,它读取字典文件中的dictFileName,并将英语单词复制到英语单词中,将精灵单词复制到猫语单词中:

Translator::Translator(const char dictFileName[]) : dict(dictFileName)
{  
    char englishWord[2000][50]; 
    char temp_eng_word[50];
    char temp_elv_word[50];
    char elvishWord[2000][50];
    int num_entries;

    fstream str;

    str.open(dictFileName, ios::in);
    int i;

    while (!str.fail())
      {
       for (i=0; i< 2000; i++)
          {
          str>> temp_eng_word;
          str>> temp_elv_word;
          strcpy(englishWord[i],temp_eng_word);
          strcpy(elvishWord[i],temp_elv_word);
           }

        num_entries = i;

      }

      str.close();

}
Translator::Translator(const char dictFileName[]):dict(dictFileName)
{  
char englishWord[2000][50];
char temp_eng_单词[50];
char temp_elv_word[50];
char-elvishWord[2000][50];
int num_条目;
fstream-str;
str.open(dictFileName,ios::in);
int i;
而(!str.fail())
{
对于(i=0;i<2000;i++)
{
str>>临时英语单词;
str>>临时弱电字;
strcpy(英语单词[i],临时英语单词);
strcpy(elvishWord[i],temp_elv_word);
}
num_条目=i;
}
str.close();
}
在主文件中,英语行被读入toElvish函数,并标记为一个单词数组,temp\u eng\u words

在这个toElvish函数中,我调用另一个函数;translate,读入临时英语单词,应该返回精灵语单词:

char Translator::toElvish(char elvish_line[],const char english_line[]) 

{
    int j=0;

    char temp_eng_words[2000][50];
    //char temp_elv_words[2000][50]; NOT SURE IF I NEED THIS

    std::string str = english_line;
    std::istringstream stm(str);
    string word;
    while( stm >> word) // read white-space delimited tokens one by one 
    {
       int k=0;
       strcpy (temp_eng_words[k],word.c_str());

       k++;

    }   

    for (int i=0; i<2000;i++) // ERROR: out_s was not declared in this scope
    {
    Dictionary::translate (out_s,temp_eng_words[i]); // ERROR RELATES TO THIS LINE
    }

}
char Translator::toElvish(char-elvish\u-line[],const-char-english\u-line[])
{
int j=0;
char temp_eng__words[2000][50];
//char temp_elv_words[2000][50];不确定我是否需要这个
std::string str=英文字母;
std::istringstream stm(str);
字符串字;
while(stm>>word)//逐个读取空格分隔的标记
{
int k=0;
strcpy(temp_eng_words[k],word.c_str());
k++;
}   

对于(inti=0;i,正如您在下面的代码中所看到的,您已经在函数中用完了,但还没有在函数中声明它。 您可以在函数中使用全局变量或局部变量。我建议您阅读

char Translator::toElvish(char-elvish\u-line[],const-char-english\u-line[]){
int j=0;
char temp_eng__words[2000][50];
//char temp_elv_words[2000][50];不确定我是否需要这个
std::string str=英文字母;
std::istringstream stm(str);
字符串字;
while(stm>>word)//逐个读取空格分隔的标记
{
int k=0;
strcpy(temp_eng_words[k],word.c_str());
k++;
}   

对于(int i=0;i)您在运行它时没有得到它,您在尝试编译它时得到它。您得到它是因为
out\u s
没有在
toElvish
中声明。我还没有找到您想要传递的内容。可能是一些足够大的空缓冲区。
char Dictionary::translate (char out_s[], const char s[])
{

 int i;

     for (i=0;i < numEntries; i++)
     {
        if (strcmp(englishWord[i], s)==0)
        break;
      }

        if (i<numEntries)
        strcpy(out_s,elvishWord[i]);
}
char Translator::toElvish(char elvish_line[],const char english_line[]) {
int j=0;

char temp_eng_words[2000][50];
//char temp_elv_words[2000][50]; NOT SURE IF I NEED THIS

std::string str = english_line;
std::istringstream stm(str);
string word;
while( stm >> word) // read white-space delimited tokens one by one 
{
   int k=0;
   strcpy (temp_eng_words[k],word.c_str());

   k++;

}   

for (int i=0; i<2000;i++) // ERROR: out_s was not declared in this scope
{
Dictionary::translate (out_s,temp_eng_words[i]); // ERROR RELATES TO THIS LINE
}}