c++ - 我有一个文本文件,每行包含一个整数。我想打开文本图块并计算文件中的整数个数
问题描述
void DataHousing::FileOpen() {
int count = 0;
// attempt to open the file with read permission
ifstream inputHandle("NumFile500.txt", ios::in);
if (inputHandle.is_open() == true) {
while (!inputHandle.eof()) {
count++;
}
inputHandle.close();
}
else {
cout << "error";
}
cout << count;
}
这陷入了while循环。但是当它到达文件末尾时,while循环不应该结束吗?另外,我什至不确定它是否正确计数。
解决方案
一个相当简单的方法是改为使用std::cin
。假设您想计算文件中的整数个数,您可以使用 while 循环,如下所示:
int readInt;
int count = 0;
while(std::cin >> readInt){
count++;
}
然后,您只需将文件作为参数参数传递给您的可执行文件,如下所示:
exec < filename
如果您更喜欢通过您要走的路线,那么您可以将您的 while 循环条件替换为!inputHandle.eof() && std::getline(inputHandle, someStringHere)
Then 继续检查是否someStringHere
是 int 并增加您的计数,如果是这样:
int count = 0;
std::string s;
ifstream inputHandle("NumFile500.txt", ios::in);
if (inputHandle.is_open() == true) {
while (!inputHandle.eof() && std::getline(inputHandle, s)) {
if(check to see if it's a number here)
count++;
}
inputHandle.close();
}
推荐阅读
- python - 在 pandas 数据框中的多个观察特征中使用 lambda 替换大于限制的值
- python - 按日期排列的二元组
- python - 我的python2.7突然停止工作,抱怨一个python3.5脚本
- php - Laravel 表单不发布
- reactjs - react-konva - 同时运行精灵动画和过滤器
- node.js - TS 使用 Jest 模拟所有嵌套函数
- linux - 在 Linux x86_64 上使用 NASM 制作钢琴
- python - 对除 pandas 中的一列之外的所有列应用标准化
- ios - 向下滚动后再次隐藏 SearchController
- arrays - 如何在 Laravel MongoDB 查询中访问数组