我正在尝试获取一个数据流,并让它写入一个.csv文件。除了写作部分之外,一切都已经解决了,我认为这仅仅是因为我没有正确引用.csv文件。但我是个新手,不知道如何正确引用它,所以我需要帮助。
您好,并在此向任何能帮助我的人表示衷心的感谢!一些预先的信息,我的IDE是Xcode,使用的是C++,而我正在使用来自Thalmic的Myo臂章作为收集数据的设备。有一个程序 (对于那些有兴趣查看它的人来说是链接),它应该将EMG、加速度计、陀螺仪和定向值流到一个.csv文件中。我差一点就能让这款应用开始工作,但我缺乏编程经验,终于赶上了我,我被困在了一些相当简单的东西上。我知道应用程序可以流数据,因为我已经能够让它在调试区域打印EMG值。我还可以让这个应用程序打开一个.csv文件,使用以下代码:
const char *path= "/Users/username/folder/filename";
std::ofstream file(path);
std::string data("data to write to file");
file << data;
但是,在我结束程序之后,没有任何数据被流/打印到该文件中。我认为唯一可能导致这种情况的原因是,print函数没有正确引用此文件路径。我认为这是一件直截了当的事情,但正如我所说,我缺乏经验,也不知道如何解决这一问题。我不知道还有什么其他的信息是必要的,所以我只会提供所有我认为可能有帮助的东西。
这是应该打开文件的函数结构:(注意:应用程序的目的是在与其自身相同的目录中打开文件)
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)
void printVector(std::ofstream &path, uint64_t timestamp, const myo::Vector3< float > &vector)
{
path << timestamp
<< ',' << vector.x()
<< ',' << vector.y()
<< ',' << vector.z()
<< std::endl;
}
这是利用助手的功能结构:
void onAccelerometerData(myo::Myo *myo, uint64_t timestamp, const myo::Vector3< float > &accel)
{
printVector(accelerometerFile, timestamp, accel);
}
我和Thalmic的一位工作人员(实际上是开发这款应用的人)进行了交谈,他说,听起来,除非应用程序完全坏了,否则我可能只是对我的电脑的权限产生了问题。这台电脑上有多个用户,所以情况很可能是这样,虽然我当然希望不是,我还是想在放弃之前再想一次。再一次感谢任何有帮助的人!)
发布于 2015-08-14 18:49:07
我的想象力正在使我失望。您是否曾经尝试过写入或读取字符串流或引导流对象?这可能是信息丰富。这里有一行是正确的:
std::ofstream outputFile( strOutputFilename.c_str(), std::ios::app );
请注意,C++对流.csv代码没有任何本地支持,但您可能必须自己进行这些转换。::(如果你把“/”改为“(双倍) "//”的话“,情况可能会更好。
https://stackoverflow.com/questions/32016613
复制相似问题