如何在 C++ 中将文本文件输入转换为数组
Posted
技术标签:
【中文标题】如何在 C++ 中将文本文件输入转换为数组【英文标题】:How do i convert a text file input to an array in c++ 【发布时间】:2020-04-13 15:54:44 【问题描述】:您好,我有一个格式为的文本文件 电话号码 门牌号码 名字 姓氏
我正在尝试读取所有数据并将其存储在一个数组中。我已经使用了下面的代码。但它只读取第一行数据。谁能帮助我为什么会这样。
#include <iostream>
#include <iomanip>
#include <fstream>
#include <string.h>
#define Size 200
unsigned long long int mobilenumber[Size];
char seatnumber[Size][4];
char firstname[Size][30],lastname[Size][30];
using namespace std;
int main()
//delcares the files needed for input and output//
ifstream infile;
ofstream outfile;
infile.open("reservations.txt",ios::in);
//opens files needed for output//
outfile.open("pricing.txt");
int i=0;
if (infile.is_open())
infile>> mobilenumber[i]>>seatnumber[i]>>firstname[i]>>lastname[i];
i++;
numberofbooking++;
infile.close();
for(int i=0;i<=numberofbooking;i++)
cout<< mobilenumber[i]<<" "<< seatnumber[i]<<" "<< firstname[i]<<" "<< lastname[i];
return 0;
提前致谢
【问题讨论】:
你需要一个循环来读取比第一行更多的内容。而不是infile>> mobilenumber[i]>>seatnumber[i]>>firstname[i]>>lastname[i];
你想要while (infile>> mobilenumber[i]>>seatnumber[i]>>firstname[i]>>lastname[i]) i++; numberofbooking++;
谢谢,成功了:)
我没有发布答案,因为这是一种非常常见的问题。我预计会有重复。
【参考方案1】:
它只读取一行数据的原因是因为这就是你告诉它要做的所有事情。这里:
...
if (infile.is_open())
infile>> mobilenumber[i]>>seatnumber[i]>>firstname[i]>>lastname[i];
i++;
numberofbooking++;
...
这将运行一次,我认为你的意思是一个while循环:
while (infile>> mobilenumber[i]>>seatnumber[i]>>firstname[i]>>lastname[i])
i++;
numberofbooking++;
只要0 <= i <= 199
,这将做你想做的事,如果i
超出该范围,那么你将得到未定义的行为。
【讨论】:
【参考方案2】:假设您的数据文件中的数据不超过 200 条,否则您的程序将失败。
您只从文件中读取一次,因此只获取第一行数据。 您需要从文件变红直到 EOF。在 if(infile.is_open()) 中添加一个 while 循环。阅读直到 EOF,如下所示。
if (infile.is_open())
while (infile >> mobilenumber[i] >> seatnumber[i] >> firstname[i] >> lastname[i])
cout << "Reading file" << endl;
i++;
numberofbooking++;
除了索引之外,我没有看到 i++ 的任何好处。我认为您也可以使用 numberofbooking 进行索引。
每当您遇到此类问题时,请尝试添加日志以检查正在发生的事情或使用调试器。希望这会对你有所帮助。
【讨论】:
@drescherjm 是有道理的。根据建议编辑。以上是关于如何在 C++ 中将文本文件输入转换为数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在Delphi中将诸如TMemo等文本控件的内容保存为TXT文件?
如何在c#.net中将图像文件(如扫描副本)转换为文本文件[重复]