gpt4 book ai didi

c++ - 打开文件时找不到数组的末尾

转载 作者:行者123 更新时间:2023-11-28 06:51:14 24 4
gpt4 key购买 nike

所以我想打开一个文件并显示内容。问题是,我不知道使用了多少元素以及有多少元素是空的。因此,当我尝试显示元素时,会显示前几个元素,但其余元素是随机数。如何找到并显示元素的确切数量?

文件:

10011   Ali         Doha        12355555    11-5-14     3434    7890 
10015 Ahmed Al-Khor 51244444 13-6-14 3425 4455
10014 Mohammed Al-Wakra 53344333 17-7-14 5566 1234
10012 Omar Doha 56666666 10-8-14 1234 5678
10013 Youssef Al-Khor 7555512 5-5-14 88000 4532
10019 Hamad Al-Wakra 81234567 8-6-14 3125 1265
10018 Jassim Doha 86753541 9-7-14 9875 5566

代码:

#include<iostream>
#include<fstream>
#include<string>

using namespace std;


int main()
{
const int isize=10;
ifstream datafile;
datafile.open("D:\customers.txt");
int customer_number[isize];
string customer_name[isize];
string customer_address[isize];
long contact[isize];
string Due_date[isize];
int water_consumption[isize];
int electricity_consumption[isize];
double total_bill[isize];
if (!datafile)//to know if the file is exist or not
cout << "error" << endl;
else
{
for(int i=0; i<1000; i++)
{
datafile >> customer_number[i];
datafile>> customer_name[i];
datafile>> customer_address[i];
datafile>> contact[i];
datafile>> Due_date[i];
datafile>> water_consumption[i];
datafile>> electricity_consumption[i];}
}

for(int i=0; i<isize; i++)
{
if(customer_number[i] == '\0')
break;
else
cout << customer_number[i] << "\t" << customer_name[i] << "\t" << customer_address[i] << "\t" << contact[i] << "\t"
<< Due_date[i] << "\t" << water_consumption[i] << "\t" << electricity_consumption[i] << "\t" << endl;

}
datafile.close();
return 0;
}

最佳答案

看起来每个文本行都是一条记录,因此使用 std::getlinestd::string 来读取一条记录。

当记录数未知时,需要动态容器,如std::vectorstd::liststd::map ,不是固定大小的数组。

您需要研究 std::string 方法以及 std::istringstream 以将文本行解析 为 native 格式字段. StackOverflow 上有很多关于如何执行此操作的示例。

因此停止使用固定大小的数组并改用 std::vector

关于c++ - 打开文件时找不到数组的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com