读取文件并存储到字符串数组

时间:2017-10-01 22:28:03

标签: c++

我是学生,我正在尝试制作一个刽子手计划。我给了一个名为words.dat的文件,我应该用于我的hangman程序,但我不知道如何存储数据并将其放入字符串数组中。我正在尝试创建一个专门用于导入文件的函数。我不知道在dat文件中会有多少单词,但我的老师说最多会有100个单词。这是我对如何做到这一点的粗略猜测,但我只是在尝试编译它时遇到了很多错误。如何将dat文件中的单词转换为字符串数组?

words.dat

COW
SCHOOL
KEY
COMPUTER

到目前为止我的功能

#include <string>
#include <fsteam>
using namespace std;

bool initializeFile(string filename){
    int importWord = 0;
    string words[100];

    ifstream input;
    input.open(filename, 'r');
    if(input.fails){
        return false;
    }        
    /*
    Tring to make for loop that runs through 
    all the characters in input(dat file) and 
    store them into the words array. if the character isn't a letter it
    skips it and continues to the next row
    */

    for(int i=0;i< input.length();i++){
        if(input[i] =="\n"){
            importWord++;
        }
        if(input[i] != "\n"){
            words[importWord]=input[i];
        }
    }

    return true;
}

1 个答案:

答案 0 :(得分:0)

由于每行只有一个单词,因此您可以使用std::getline来读取单词。

const int MAXIMUM_WORDS = 100;
std::string words[MAXIMUM_WORDS];
std::string word_from_file = 0;
int word_count = 0;
while (std::getline(word_file, word_from_file))
{
  if (word_count > MAXIMUM_WORDS)
  {
    break;
  }
  words[word_count] = word_from_file;
  ++word_count;
}

如果您已涵盖break语句,则可以使用乘法条件:

while ((word_count < MAXIMUM_WORDS) && (std::getline(word_file, word_from_file))

上面的代码足够小,您可以将代码放入main函数中,从而消除了将数组传递给输入函数的麻烦。