【发布时间】:2021-09-16 11:37:42
【问题描述】:
我有一段代码,我在其中读取一个 CSV 文件并打印它的内容。现在的问题是我想在 ESP32 上运行我的代码,并且由于 micropython 的一些限制,我无法将我的文件上传到 spiffs 存储中。那么有什么方法可以将 csv 文件内容存储在代码本身中,而不是从外部读取呢?
我的代码:
vector<vector<double> > read_csv(const char *filename)
{
ifstream read_file(filename);
vector<vector<double> > csv_data;
std::string lineStr;
while (getline(read_file, lineStr))
{
stringstream ss(lineStr);
std::string d;
vector<double> a_line_data;
while (getline(ss, d, ','))
{
a_line_data.push_back(atof(d.c_str()));
}
csv_data.push_back(a_line_data);
}
//cout << csv_data << endl;
return csv_data;
}
这就是我打印内容的方式:
vector<vector<double> > csv_data = read_csv("A00068.csv");
// print tests
printf("CSV:%d\n", csv_data);
printf("SIZE:%d\n", csv_data.size());
【问题讨论】:
-
您的存储似乎正确,但您的打印肯定不正确。
-
您想硬编码这些值而不是从文件中读取?
std::vector<std::vector<double>> csv_data{ { 0.2,....},{....}, ...};. -
@463035818_is_not_a_number 可能有一个正则表达式可以进行这种转换;)
-
抛开所有的玩笑,您最好只阅读文件。阅读看起来不错,虽然我会使用 std::stof 它可以直接转换 std::strings 。我会使用基于范围的 for 循环和 cout 来输出向量的内容。
-
@PKramer 可能有任何东西的正则表达式,但这太真实了:xkcd.com/1171