c++ - 逐行读取文本文件并将其存储在数组中
问题描述
问题是,只有文本文件中的最后一个单词被分配到数组的所有位置。请帮忙
#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]
(由于溢出,这是未定义的行为)。
并非所有溢出都被检测到。由于溢出是一种未定义的行为,因此如果您这样做,任何事情都可能发生,当然“任何事情”包括“一切看起来都很好,没有崩溃或虚假结果”的情况。如果您熟悉操作系统或汇编语言或其他一些低级技能,您就会知道原因。但是,仍然有检测此类问题的方法。
其次,你应该正确使用的结果getline
getline(file,line)
此函数逐行读取文件,并将结果存储到line
.
显然你没有学好 C++。不使用变量b
,i
并str
声明为全局;iostream
不需要stdio.h
;缩进不佳;不正确地使用数组,...我(个人)强烈建议您在继续编写程序之前复习 C++ 基础知识。
推荐阅读
- javascript - 部署了用于检查 App Distribution 的 Firebase 功能
- angular - 为什么 execEmbeddedViewsAction 被调用了几次?
- apache-kafka - 将数百万物联网设备中的数据提取到 kafka 主题的最佳工具/技术
- flutter - 如何从 webview flutter 中获取最终 url
- css - 带有反应的AnimeJs实现不起作用
- android - 允许外部目录访问和授予权限的 Android 10 代码
- azure - 如何从 .NET 更新基于 Azure 应用程序网关路径的规则 UrlPathMap
- passwords - 应用程序用户已锁定,密码为 .mdb 文件
- javascript - 选择下拉选项添加特殊字符
- reactjs - redux中如何使用axios获取api项?