我是编程的初学者。我目前的大学作业告诉我从文件中读取文本,只获得“有效”的单词,即 end
而不是end.
。我陷入了必须将一个新检测到的单词放入一系列单词的部分。
编译器错误是:数组必须使用大括号括起初始化程序初始化
int const MAX_WORDS = 100000;
int const MAX_WORDLENGTH = 80;
typedef char Word [MAX_WORDLENGTH];
typedef Word Words [MAX_WORDS];
Words words ;
bool read_file (char filename [80])
{
ifstream file(filename);
if(!file) {
cout << "wrong filename";
return false;
}
char c;
int word_idx = 0;
Word word = words[word_idx++];
int letter_idx = 0;
int connector_count = 0;
while (file.get(c)) {
if ((c>='A' && c<='Z')||(c>='a' && c<='z'))
{
word[letter_idx++] = c;
cout << c << endl;
}
else {
if (c == '-') {
if(connector_count==0) {
word[letter_idx++] = c;
connector_count++;
}
else {
if(connector_count==1) {
word[letter_idx-1] ='\n';
Word word = words[word_idx++];
}
}
}
}
}
答案 0 :(得分:0)
这是导致错误的行(你有两个):
单词单词=单词[word_idx ++];
通过赋值进行数组初始化在C ++中是非法的,例如,如果你有这样的东西:
typedef char string[5];
string str = "hello";
你尝试做这样的事情:
string str2 = str;
你会得到同样的错误。你处理这个的方式是包括
#include <string.h>
并执行此操作:
memcpy(str2, str, sizeof(string));
所以在你的情况下,你应该这样做,而不是Word word = words[word_idx++];
:
Word word; //declare variable
memcpy(word, words[word_idx++], sizeof(Word)); //copy to variable
当然,如果您想避免将来头痛,请使用std::string
。
希望这会有所帮助。