将数组设置为包含字符串值会导致错误

时间:2017-10-05 22:57:49

标签: c++ arrays string

我是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'

我不确定我做错了什么,或者为什么它会把任何东西当成一个角色

2 个答案:

答案 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