查找文件中的项目数.txt
Find number of items in .txt file
我正在寻找一种在.txt文件中查找项目数的方法。
文件结构如下:
students.txt pricem 1441912123
house.pdf jatkins 1442000124
users.txt kevin_tomlinson 1442001032
accounts.mdb kevin_tomlinson 1442210121
vacation.jpg smitty83 1442300125
calendar.cpp burtons 1442588012
在此示例中,结果应为 18,因为此文件中有 18 个单独的"单词"。
我需要该值,以便我可以遍历项目并将它们分配给结构数组(也许有一种方法可以同时完成这两个步骤?
// my structure
struct AccessRecord
{
string filename;
string username;
long timestamp;
};
// new instance of AccessRecord
// max possible records: 500
AccessRecord logRecords[500];
// while file has content
while (!fin.eof())
{
// loop through file until end
// max possible records: 500
for (int i = 0; i < 500; i++) // need to figure out how to iterate
{
fin >> logRecords[i].filename
>> logRecords[i].username
>> logRecords[i].timestamp;
}
}
然后将其写入屏幕。
所以问题是,我如何找到计数?还是有更好的方法?
您知道每行包含一个字符串、一个字符串和一个长字符串,因此您可以迭代:
std::vector<AccessRecord> logs;
std::string fname, uname;
long tstamp;
while(fin >> fname >> uname >> tstamp) {
logs.push_back(AccessRecord(fname, uname, tstamp));
//To avoid copies, use: (thanks @Rakete1111!)
//logs.emplace_back(std::move(fname), std::move(uname), tstamp);
}
这是假设您已经为结构创建了一个构造函数,例如:
AccessRecord(std::string f, std::string u, long t)
: filename(f), username(u), timestamp(t) { }
请注意,我在这里使用的是std::vector
而不是数组,这样我们甚至不必担心项目的数量,因为向量会动态调整自身大小!
你应该为结构重载operator>>
:
struct AccessRecord
{
string filename;
string username;
long timestamp;
friend std::istream& operator>>(std::istream& input, AccessRecord& ar);
};
std::istream& operator>>(std::istream& input, AccessRecord& ar)
{
input >> ar.filename;
input >> ar.username;
input >> ar.timestamp;
return input;
}
这使您可以简化输入函数:
AccessRecord ar;
std::vector<AccessRecord> logs;
//...
while (fin >> ar)
{
database.push_back(ar);
}
通常,如果您直接在类或结构外部访问对象数据成员,则会出现问题。 在互联网上搜索"数据隐藏"、"C++ 封装"和"C++ 松耦合"。
相关文章:
- 如何将 txt 文件中的行分隔为组件C++
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 一种在C++中读取TXT配置文件的简单方法
- 如何修复此iFile以将.txt输出到控制台
- 无法打开.txt文件
- CMakeLists.txt中的命名空间表示法
- Arduino从Txt读取整数
- 如何使用CLion在Mac上创建一个新的.txt文件
- 如何拆分文件中.txt字母并使用c ++使用数组进行扑克?
- 使用fstream对txt文件中的数字进行循环
- Visual Studio在尝试读取resource.txt文件时崩溃
- 更正 CMakeList.txt 用于谷歌测试的文件?
- 如何从txt文件中读取多个不同长度的数组?
- 在一次迭代中从 txt 文件中读取多行
- 将生成文件转换为 CMakeLists.txt等效项
- 使用循环将多行写入.txt
- CMake 错误"源似乎不包含 CMakeLists.txt",路径/库连接问题
- C++/autoconf 等效于文档库要求.txt的要求是什么?
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 查找文件中的项目数.txt