C ++将文本文件保存在数组中

时间:2016-11-12 00:59:12

标签: c++

因此,我想出了以下代码来打开文本文件并将其保存并使用数组打印出所有文本。我的问题是,如何访问文件中的特定单词或文本。如果我没有弄错的话,应该有一个for循环参与其中,但我不太清楚如何去做。

int main() {
    ifstream dictionaryFile;
    dictionaryFile.open("dictionary.txt");
    char output[100];
    //char wordsFromDictionary[40437][22];

    int i=0;
    if(dictionaryFile.is_open()){
        while(!dictionaryFile.eof()){
            dictionaryFile >> output;
            cout<<output<<endl;
        }

    }
    return 0;
}

2 个答案:

答案 0 :(得分:0)

因为你有一个char数组

char output[100];

此数据结构中的单词之间没有区别。文件只是逐个字符地读取并存储在数组中。

分离为单词的简单实现(使用您请求的循环,对代码进行最少的更改),假设单词用分隔符分隔

char wordsFromDictionary[40437][22];
char delimiter=...
int i=0;
int j=0
char c;
if(dictionaryFile.is_open()){
    while(!dictionaryFile.eof()){
        c=dictionaryFile.get();
        if(c==delimiter){
          i++;
          j=0;
        }
        else if(j<22) {
          wordsFromDictionary[i][j]=c;
          j++;
        }
    }
}

请注意,这只会缩短,缩短超过22个字符的单词。

答案 1 :(得分:0)

如果你想阅读一些字符串,显而易见的选择是使用std::string来完成这项工作。如果您想要一个数组,请将它们存储在std::vector

ifstream d("dictionary.txt");

std::vector<std::string> words{std::istream_iterator<std::string>(d), {}};

这会将所有单词读入矢量。如果他们已经排序,您可以(例如)使用std::binary_search来查找某个单词是否在向量中。