TL; DR我正在尝试获取数据流并将其写入.csv文件。除了写作部分外,一切都已经解决了,我认为这只是由于我没有正确引用.csv文件。但我是这个东西的新手,并不知道如何正确引用它,所以我需要帮助。使用C++写入.csv文件?
大家好,我非常感谢任何能够帮助我的人!一些高级信息,我的IDE是Xcode,使用C++,我使用Thalmic Labs的Myo臂章作为收集数据的设备。有一个program(有兴趣查看它的链接)应该将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;
但没有数据最终被流/打印成文件,我结束程序之后。我认为唯一可能导致这种情况的是打印功能不正确引用此文件路径。我认为这是一个简单的事情,但就像我说的,我没有经验,并且不知道如何解决这个问题。我不知道还有哪些其他信息是必要的,所以我只提供我想象中可能有用的所有内容。
这是功能结构,是应该打开文件(注:该应用程序的目的是在同一个目录中打开该文件作为本身)
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;
这是助手打印加速度计和陀螺仪的数据(虽然目前没有出现像这样的东西打印肌电图的数据,但我知道它,所以... 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实验室,他说这听起来像,除非应用程序只是完全坏了,我可能只是具有的权限问题(谁做的应用程序实际上是人)的一名工作人员讲我的电脑。这台计算机上有多个用户,所以很可能是这种情况,尽管我当然不希望这样,而且我还想在再次投入之前再试一次。再次,感谢任何可以帮助的人! :)
你检查过文件['is_open()'](http:// en .cppreference.com/w/cpp/io/basic_ofstream/is_open)? – NathanOliver
您可以提供[MCVE](http://stackoverflow.com/help/mcve)? – caps
您正在使用相对路径来打开文件,如果你的工作目录不包含这些目录,而不是简单地创建它们,文件打开操作将失败。使用绝对路径,只是一个文件,或者使用文件系统操纵系统(如文件系统TS或促进。文件系统)来生成适当的目录。不过,检查文件打开是否成功始终是一个好主意。你能否验证你在工作目录中是否有正确的文件,或者它在你使用文件时有效? – jaggedSpire