从文件访问数据
Accessing data from file
我知道这在SO(和其他地方(上已经讨论了很多。我在这里问,因为我仍然被困住了。也许我正在做一些非常无脑/愚蠢的事情,或者这是一个真正的陷阱......
我有一个文件目录,每个文件都有扩展名为".pts" - 打开一个会显示:
版本: 1
n_points: 68
{
498.801220 504.771171
516.076459 571.681686
518.038170 628.516761 ...
粘贴到此处会使格式有点错误,因此请注意,每行数据之间没有空行。这些浮点对中也有 68 个,但我在这里省略了它们。
最终,我想要一个圆形短裤对的矢量 - 例如 499、505、516、572、518、629 ...
但目前我无法按原样访问浮标,更不用说任何信息了。
到目前为止的代码:
#include <iostream>
#include <string>
#include "dirent.h"
#include <fstream>
#include <sstream>
#include <stdio.h>
using namespace std;
bool has_suffix(const string& s, const string& suffix)
{
return (s.size() >= suffix.size()) && equal(suffix.rbegin(), suffix.rend(), s.rbegin());
}
int main(int argc, char **argv)
{
string path = "C:\testset";
DIR *dir = opendir(path.c_str());
if(!dir)
{
return 1;
}
dirent *entry;
string fileName;
float number;
string dummy;
while(entry = readdir(dir))
{
if(has_suffix(entry->d_name, ".pts"))
{
fileName = entry->d_name;
fileName = path + "\" + fileName; // <<added at suggestion of Martin James
//Working up to here as I see all the .pts files listed when I print them:
cout << fileName << endl;
ifstream file(fileName, std::ios_base::in);
//however from here:
while (file >> number)
{
//...nothing will print
printf("%f ", number);
}
file.close();
}
}
closedir(dir);
}
查找所有 .pts 文件都可以工作(感谢 SO :) 上的其他线程 - 当它们在文本编辑器中打开时,它们看起来确实是简单的 .text 文件。每行末尾都有一个"LF"。
问题是运行代码只会导致列出文件名。似乎"while(文件>>号("没有返回任何内容来运行 print 语句。问题是,关于该主题的其他线程表明(至少对我来说(它就这么简单。
我觉得答案很可能涉及我在过去几个小时内看过的东西 - 虚拟字符串变量来吸收我不需要的文件顶部的所有内容?"代币"?我会向你展示我所有的尝试,但我不想陷入这个问题:
给定一个格式如上格式的 txt 文件,您将如何访问从第 4 行开始的值?
任何帮助非常感谢:)
这里的问题是,您没有读取标题信息。>>
操作失败,因为您尝试将字符串"version: 1"作为浮点数读取。
若要解决此问题,应跳过标头,只需调用少量std::getline
,要么对其进行分析以获取有关内容的信息。
编辑:要跳过这些行,您可以执行以下操作:
for(int i=0;i<3;i++) //Skip header
std::getline(file,dummy);
- 用于访问容器<T>数据成员的正确 API
- 使用指针访问数组中的对象数据成员
- 友元函数无法访问私有数据成员 (c++)
- OpenCV C++ 3 维垫数据访问错误值
- 用于随机数据访问的最有效文件类型
- 用于多维数据访问的重载 () 运算符
- MEX C++原始数据访问
- C++数据访问基准
- 随机 mmaped 内存访问比堆数据访问慢 16%
- 共享内存多线程和数据访问
- 如何使用常见的C 业务逻辑和数据访问层构建跨平台移动应用程序
- 链表数据访问
- OpenMP线程、数据访问延迟和STL数据容器
- C++ 矢量数据访问
- 我很难在C++类中实现我想要的数据访问
- 概括模型中的数据访问.避免宏观的方法
- 矢量化/优化循环,用于宽寄存器(特别是Xeon Phi)的未对齐数据访问
- 松类耦合和数据访问
- 在Linux上锁定对单个进程内数据访问的最快方法
- 如何使用数据访问对象进行序列化和关系数据库数据访问