繁体   English   中英

逐行读取文本文件并将其存储在数组中

[英]Reading Text file line by line and storing it in array

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

#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();
}
    
       

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

首先,这条线

file >> a[200000];

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

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


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

getline(file,line)

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


显然你没有学好C++。 不使用声明为 global 的变量bistr iostream不需要stdio.h 糟糕的缩进; 数组的错误使用,...我(个人)强烈建议您在继续编写程序之前先了解 C++ 基础知识。

你可以使用 vector 代替,你为什么不正确?

#include <vector>
#include <fstream>

vector <string> v;
ifstream file( path );
if( file.is_open( ) ){
    string line;
    while( getline( file, line ) ){
        v.push_back( line );
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM