【发布时间】:2012-06-26 05:33:19
【问题描述】:
struct DataValue
{
DataValue() : uiQuality(0) {} // Here 0 stands for good.
unsigned int uiQuality;
std::string timeChanged;
float value;
};
std::vector<DataValues> myDataValues
在我的应用程序中的某个时刻,我的向量中的数据已被填充。我正在使用下面的文件写入文件。
std::ofstream myfile("myData.txt", std::ios::app);
for (int j = 0; j < myDataValues.size(); j++)
{
std::string quality;
if(myDataValues[j].quality == 0) {
quality = "good";
}
else {
quality = "bad";
}
myfile << myDataValues[j].timeChanged.c_str() << " " << myDataValues[j].value << " " << quality << std::endl;
}
文件如下所示。
2012-06-25 12:41:56.789 55 good
2012-06-25 12:51:14.782 55 good
2012-06-25 05:25:16.456 62.6925 good
2012-06-25 05:26:11.458 63.4109 good
2012-06-25 05:27:01.459 63.0383 good
2012-06-25 05:27:56.959 61.5266 good
2012-06-25 05:29:01.959 58.5354 good
2012-06-25 05:32:06.963 47.5656 good
2012-06-25 05:33:06.964 44.9916 good
2012-06-25 05:33:11.963 44.8267 good
2012-06-25 05:34:06.965 43.6011 good
2012-06-25 05:34:56.965 43.493 good
2012-06-25 12:51:14.782 52.418 good
2012-06-25 09:49:54.112 0 good
2012-06-25 11:50:30.781 0 good
现在我必须在其他应用程序中读取上述文件并填充另一个向量。填充向量,无论它是否重复,都不需要此检查。
std::vector<DataValues> anotherDataValues
请求示例代码我如何从上面的文件中读取数据并填充上面的向量?
我如何有效地做到这一点。
感谢您的时间和帮助。
【问题讨论】:
-
有重复,但主要的想法是(在我脑海中):
std::vector<std::string> anotherDataValues (std::ostream_iterator<std::string>(fileObject, " "), std::ostream_iterator<std::string>()); -
在填充向量时,我不必检查是否重复,只需从文件中读取数据并读取到向量中,您能详细说明一下吗?
-
我的意思是重复的问题;我最近看到了一些。该代码使用
ostream_iterator作为开始和结束位置粗略地初始化一个向量,以有效地将文件读入字符串向量。简而言之,它是一个单线,不像做同样事情的短循环那么容易理解。 -
std::string没有成员函数Format()。 -
如何读取上面的字符串向量并填充我的数据类型“DataValues”的向量?你能显示示例代码吗?