我是C ++的新手,并不完全确定我做错了什么。这是我的代码。很简单
#include <iostream>
#include <fstream>
using namespace std;
const string WORD_FILE = ("/Users/matt/Desktop/C++/Hangman/Hangman/words.txt");
const int WORDS_USED = 20;
string fillArray(string words[]);
int main() {
string words[WORDS_USED];
fillArray(words);
}
string fillArray(string words){
string word;
ifstream inputStream;
inputStream.open(WORD_FILE);
while (int x=0 < WORDS_USED){
inputStream >> word;
words[x] = word;
}
return words;
}
当我运行时,我在&#34;单词[x] = word;&#34;上收到错误线。
Assigning to 'value_type' (aka 'char') from incompatible type 'string'
我不确定我做错了什么,或者为什么它会把任何东西当成一个角色
答案 0 :(得分:2)
你的函数定义中只有一个拼写错误:
string fillArray(string words){
...
}
words
应该是一个数组,即words[]
。您的编译器应该警告您定义签名与文件中先前的声明不匹配。
答案 1 :(得分:1)
您的代码中存在一些错误。
您声明fillArray()
接受一个std::string
个对象作为输入,并返回一个std::string
作为输出。但是,在函数定义中,输入参数未声明为数组,而是单个std::string
。这就是您收到编译器错误的原因 - 您确实在尝试将std::string
的{{1}}读取分配给单个std:::ifstream
。
此外,char
循环的语法都是错误的。但即使它不是,你根本不会增加while
,所以你的循环在达到20个单词时不会中断。并且你没有对x
读数进行任何错误处理,因此当它达到EOF或遇到读数错误时,循环也不会中断。
尝试更像这样的事情:
ifstream