[英]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 的变量b
、 i
和str
; 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.