从文件中读取数据
Read data from a file
文件包含此形式的数据。
1#Ali Khan#Lahore#M#22#1#1#1997#1 2#Ahsan Latif#Karachi#M#19#21#5#1996#1 3#M Sultan#Lahore#M#15#15#1#1998#1 4#Sana Ali#Islamabad#F#19#3#4#1996#1
其中每行按以下顺序表示一个唯一用户(ID、姓名、城市、性别、年龄、DoB(。
我的程序必须逐行读取此文件,并填充用户列表。
void loadUsersfromFile( facebookUser * userlist, int & size);
facebookUser
是一个struct
.userlist
是一个数组
我尝试使用getline()
并在字符串变量中放一行。然后使用 substr i 提取 id,用户名性别等。
但问题是字符串无法复制到 facebookUser 类型数组中。所以它不起作用。
#include <iostream>
#include <fstream>
using namespace std;
struct mDate {
int day;
int month;
int year;
};
struct facebookUser {
int id;
char *userName;
char *city;
char gender;
mDate Dob;
int *friendList; //Array of int type, where you will store friend id’s
int friends = 20; //Store Number of Friends, default value i 20.
bool active; // true for active users and false for inactive
};
void loadUsersfromFile (facebookUser * ul, int &s)
{
ifstream myFile;
myFile.open ("users.txt");
myFile.close ();
}
int main ()
{
facebookUser *userlist;
int size;
size = 4;
userlist = new facebookUser[50];
loadUsersfromFile (userlist, size);
}
首先,我强烈建议在这种情况下不要使用 char *。它根本不需要。请改用std::string
。
喜欢这个:
struct facebookUser {
int id;
std::string userName;
std::string city;
char gender;
mDate Dob;
int *friendList; //Array of int type, where you will store friend id’s
int friends = 20; //Store Number of Friends, default value i 20.
bool active; // true for active users and false for inactive
};
现在,使用 std::getline 获取数据。
void loadUsersfromFile (facebookUser * ul, int &s)
{
ifstream myFile;
myFile.open ("users.txt");
unsigned int userIndex = 0;
if (myFile.is_open()) {
std::string line;
while (getline(myFile, line)) {
std::istringstream sstr(line);
std::string value;
unsigned int columnIndex = 0;
while (getline(sstr, value, '#')) {
switch (columnIndex) {
case 0: {
ul[userIndex].id = stoi(value);
}
break;
case 1: {
ul[userIndex].userName = value;
}
break;
case 2: {
ul[userIndex].city = value;
}
break;
case 3: {
ul[userIndex].gender = value[0];
}
break;
case 4: {
ul[userIndex].Dob.day = stoi(value);
}
break;
case 5: {
ul[userIndex].Dob.month = stoi(value);
}
break;
case 6: {
ul[userIndex].Dob.year = stoi(value);
}
break;
case 7: {
ul[userIndex].active = (value == "1") ? true : false;
}
break;
default:
break;
}
columnIndex++;
}
userIndex++;
}
}
}
建议:
除非确实有必要,否则切勿在代码中使用原始指针。在您的情况下,您可以将 int *
、facebookuser *
替换为std::vector
等效项,char *
替换为 std::string。
相关文章:
- C++将文本文件中的数据读取到结构数组中
- 为 Sql 服务器实现 odbc 包装器.将数据库数据读取为字符或要求驱动程序将数据转换为 C 类型
- 如何将来自文本文件的数据读取到结构的int阵列中
- 如何将不同长度的数据读取到 2D 数组中
- 从TXT文件到C 的结构向量中的数据读取
- 将sqlite原始数据读取到qbyTearray
- 如何将来自输入TXT文件的数据读取到2 C 数组中
- 使用MQQueue将数据读取到缓冲区中时麻烦
- 在 VC++ 中将类数据读取和写入二进制文件
- 将数据从数据读取器终端获取到GUI(QtCreator)
- C 将数据读取到一个结构,但它跳过了我的一个获取线,使该元素空白
- C++将二进制数据读取到结构
- c++我需要将文件中的数据读取到多维数组中,然后用一种数据类型对数组进行排序.怎样
- 对齐数据:速度取决于恒定数据读取的相对采样大小和采样频率
- 如何将文件中的数据读取到数组中
- 如何使用Visual C++应用程序的完整应用程序数据读取Minidump的应用程序数据
- 如何将csv文件数据读取到数组中
- 用C++将格式化的数值数据读取到数组中
- 正在从文件中将数据读取到结构数组中
- 将分离的数据读取到数组结构c++中