首页 > 解决方案 > 逐行读取文本文件并将其存储在数组中

问题描述

问题是,只有文本文件中的最后一个单词被分配到数组的所有位置。请帮忙

#include<iostream>
#include<stdio.h>
#include <fstream>
using namespace std;
int i;
string a[200000];
string b[1];
char str;
void store()
{

    ifstream file("english3.txt");
    if(file.is_open())
    {
        string line;
        while(getline(file,line))
        {
            for(int i = 0; i < =200000; i++)
            {
                file >> a[200000];
            }
        }
        cout<<"The dic words are:"<<endl;
        for(int i = 0; i < 200000; i++)
        {
            cout<<" "<<a[200000];
        }        
    }

}
    
int main()
{
    store();
}
    
       

还请电话如何将用户的字符串(单词)与该数组进行比较。

标签: c++arrays

解决方案


首先,这条线

file >> a[200000];

总是写入a[200000](由于溢出,这是未定义的行为)。

并非所有溢出都被检测到。由于溢出是一种未定义的行为,因此如果您这样做,任何事情都可能发生,当然“任何事情”包括“一切看起来都很好,没有崩溃或虚假结果”的情况。如果您熟悉操作系统或汇编语言或其他一些低级技能,您就会知道原因。但是,仍然有检测此类问题的方法。


其次,你应该正确使用的结果getline

getline(file,line)

此函数逐行读取文件,并将结果存储到line.


显然你没有学好 C++。不使用变量bistr声明为全局;iostream不需要stdio.h;缩进不佳;不正确地使用数组,...我(个人)强烈建议您在继续编写程序之前复习 C​​++ 基础知识。


推荐阅读