我是学生,我正在尝试制作一个刽子手计划。我给了一个名为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;
}
答案 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
函数中,从而消除了将数组传递给输入函数的麻烦。