以下代码在我编译时给了我 2 个错误
#include <iostream>
#include <fstream>
#include <cstring>
#include "Translator.h"
using namespace std;
void Dictionary::translate(char out_s[], const char s[])
{
int i;
char englishWord[MAX_NUM_WORDS][MAX_WORD_LEN];
for (i=0;i < numEntries; i++)
{
if (strcmp(englishWord[i], s)==0)
break;
}
if (i<numEntries)
strcpy(out_s,elvishWord[i]);
}
char Translator::toElvish(const 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
}
}
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();
}
}
第一个在
std::string istringstream stm(str)
;它说它的变量有一个初始化程序但不完整的类型。如果我输入 std::string istringstream stm(str)
;它在 stm
和 stm was not declared in the scope
之前表示预期的初始化程序。它还说
out_s
没有在 Dictionary::translate (out_s,temp_eng_words[i])
的这个范围内声明;。我不明白为什么一个参数被识别而一个参数不被识别?提前致谢。
最佳答案
您必须包含头文件:
#include <sstream>
#include <string>
当您想使用
stringstream
和 string
时。同时:
Dictionary::translate (out_s,temp_eng_words[i]);
如果
out_s
不是该类的成员,则您似乎忘记在 out_s
中使用它之前定义 toElvish
。同时:
while( stm >> word) // read white-space delimited tokens one by one
{
int k=0; //^^Why do you initialize k everytime you read a word?
strcpy (temp_eng_words[k],word.c_str());
k++;
}
关于c++ - 初始化程序但类型不完整?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16545753/