首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用.csv写入C++文件?

用.csv写入C++文件?
EN

Stack Overflow用户
提问于 2015-08-14 18:32:53
回答 1查看 1.1K关注 0票数 0

我正在尝试获取一个数据流,并让它写入一个.csv文件。除了写作部分之外,一切都已经解决了,我认为这仅仅是因为我没有正确引用.csv文件。但我是个新手,不知道如何正确引用它,所以我需要帮助。

您好,并在此向任何能帮助我的人表示衷心的感谢!一些预先的信息,我的IDE是Xcode,使用的是C++,而我正在使用来自Thalmic的Myo臂章作为收集数据的设备。有一个程序 (对于那些有兴趣查看它的人来说是链接),它应该将EMG、加速度计、陀螺仪和定向值流到一个.csv文件中。我差一点就能让这款应用开始工作,但我缺乏编程经验,终于赶上了我,我被困在了一些相当简单的东西上。我知道应用程序可以流数据,因为我已经能够让它在调试区域打印EMG值。我还可以让这个应用程序打开一个.csv文件,使用以下代码:

代码语言:javascript
运行
复制
const char *path= "/Users/username/folder/filename";
std::ofstream file(path);
std::string data("data to write to file");
file << data;

但是,在我结束程序之后,没有任何数据被流/打印到该文件中。我认为唯一可能导致这种情况的原因是,print函数没有正确引用此文件路径。我认为这是一件直截了当的事情,但正如我所说,我缺乏经验,也不知道如何解决这一问题。我不知道还有什么其他的信息是必要的,所以我只会提供所有我认为可能有帮助的东西。

这是应该打开文件的函数结构:(注意:应用程序的目的是在与其自身相同的目录中打开文件)

代码语言:javascript
运行
复制
void openFiles() {
    time_t timestamp = std::time(0);

    // Open file for EMG log
    if (emgFile.is_open())
    {
        emgFile.close();
    }
    std::ostringstream emgFileString;
    emgFileString << "emg-" << timestamp << ".csv";
    emgFile.open(emgFileString.str(), std::ios::out);
    emgFile << "timestamp,emg1,emg2,emg3,emg4,emg5,emg6,emg7,emg8" << std::endl;

这是打印加速度计和陀螺仪数据的助手(似乎没有类似的东西来打印EMG数据,但我知道是这样的,所以.(Watevs)

代码语言:javascript
运行
复制
void printVector(std::ofstream &path, uint64_t timestamp, const myo::Vector3< float > &vector)
{
    path << timestamp
    << ',' << vector.x()
    << ',' << vector.y()
    << ',' << vector.z()
    << std::endl;
}

这是利用助手的功能结构:

代码语言:javascript
运行
复制
void onAccelerometerData(myo::Myo *myo, uint64_t timestamp, const myo::Vector3< float > &accel)
{

    printVector(accelerometerFile, timestamp, accel);

}

我和Thalmic的一位工作人员(实际上是开发这款应用的人)进行了交谈,他说,听起来,除非应用程序完全坏了,否则我可能只是对我的电脑的权限产生了问题。这台电脑上有多个用户,所以情况很可能是这样,虽然我当然希望不是,我还是想在放弃之前再想一次。再一次感谢任何有帮助的人!)

EN

回答 1

Stack Overflow用户

发布于 2015-08-14 18:49:07

我的想象力正在使我失望。您是否曾经尝试过写入或读取字符串流或引导流对象?这可能是信息丰富。这里有一行是正确的:

代码语言:javascript
运行
复制
std::ofstream  outputFile( strOutputFilename.c_str(), std::ios::app );

请注意,C++对流.csv代码没有任何本地支持,但您可能必须自己进行这些转换。::(如果你把“/”改为“(双倍) "//”的话“,情况可能会更好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32016613

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档