【问题标题】:Read from text file and store each value in separate arrays in c++从文本文件中读取并将每个值存储在 C++ 中的单独数组中
【发布时间】:2014-12-26 18:13:34
【问题描述】:

我正在尝试阅读以下内容:

rima    doha    44881304    20  30  10  10  20  10102   10102
andrew  ny      123456      12  12  13  14  15  01020   03040

并将它们存储在单独的数组中,编辑它们,然后再次存储到同一个文件中。

这是我尝试的代码:

ifstream infile;
infile.open("D:\\customers.txt");
string names[100];
string addresses[100];
int tn[100];
int numCalls[100];
int trunkCalls[100];
int numMobCalls[100];
int isdnNum[100];
int dueD[100];
int paymentD[100];

int numOfPpl = 0;

int numOfPpl = 0;

for(int i=0; i<100; i++){
        infile >> names[i] >> addresses[i]>>tn[i]>>numCalls[i]>>trunkCalls[i]>> numMobCalls[i]>> isdnNum[i]>>dueD[i]>>paymentD[i];
        numOfPpl++;
}

//Code where some values were edited



ofstream outfile("D:\\customers.txt");


for(int i=0; i<numOfPpl; i++)
{
    outfile<<names[i] << "\t" <<addresses[i] << "\t" <<tn[i]<<"\t" <<numCalls[i]<<"\t" 
        <<trunkCalls[i]<<"\t"<<numMobCalls[i]<<"\t"<<numMobCalls[i]<<"\t"<<isdnNum[i]<<"\t"<<dueD[i]<<"\t"<<paymentD[i]<<endl;
}

outfile.close();
infile.close();

问题是前两行存储正确,但是文件中有随机值。我该如何解决这个问题?

【问题讨论】:

  • 文件有多少行?
  • 你可能得到垃圾值,它们是大的负数吗?我会假设你有问题,因为你循环 i -> 100 所以如果文件中没有 100 行,那么空的行将是垃圾值。
  • 拜托,不要再找一个了。您是否在 StackOverflow 中搜索过“c++ 读取文件列”?

标签: c++ arrays file


【解决方案1】:

您的代码有几处问题。

首先,您声明 numOfPpl 两次。摆脱第二个计数。

其次,您有 9 个输入类别(姓名、地址等),但您的文本文件每行有 10 个。这将使整个程序关闭。

第三个问题是你要在customers.txt 中有100 行吗?如果没有,您应该使用命令查看下一行,以确保下面是否还有另一行。如果您的文本文件中没有 100 行,则使用 while 或 do/while 循环可能会更好。类似的东西

while(infile){
   // retrieve your data
   infile.peek();
}

或利用 for 循环

for(int i = 0; infile; i++){
   // retrieve your data
   infile.peek();
}

可能会是一个更好的循环。同样,如果你不打算有 100 行,for 循环会给你空输出,因为没有任何数据被放入数组元素中。我相信这应该可以解决您的问题。

您应该注意的另一件事是在行尾有一个额外的空格。这也会使您的程序输出关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 2016-01-24
    • 1970-01-01
    • 2020-02-09
    • 2016-08-06
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多