【发布时间】:2017-08-30 22:44:12
【问题描述】:
我是 C++ 菜鸟,我有一个 4 行 3 列的文本文件,其中每一行对应一个传感器信号。如何将每一行加载到单独的vector<float>?
(0.165334,0) (0.166524,-0.0136064) (-0.144899,0.0207161)
(0.205171,0) (0.205084,-0.0139042) (-0.205263,0.0262445)
(0.216684,0) (0.215388,-0.0131107) (-0.193696,0.0251303)
(0.220137,0) (0.218849,-0.0135667) (-0.194153,0.025175)
这是我目前所拥有的,但这段代码将数据加载为字符串。我想将我的最终数据加载为vector<vector<float>>?
vector<vector<string> > input;
ifstream fileFFT(Filename.c_str());
string line;
while(getline(fileFFT, line)){
if(line.empty()){
continue;
}
stringstream row(line);
vector<string> values((istream_iterator<string>(row)),(istream_iterator<string>())); //end
input.push_back(values);
}
【问题讨论】:
-
您是否需要字符串向量的向量?还是一个字符串向量就足够了?
-
在 StackOverflow 中搜索“c++ 读取文件 CSV”。已经有很多类似的问题了。
-
@spandy,如果您知道元素的长度总是两个,那么使用
std::pair、std::array甚至您自己的类或结构可能会更好,而不是嵌套向量。跨度> -
不,你不需要矢量
>。你想要 std::vector<std::vector<Point> >或std::vector<std::vector<std::pair<float,float>>>。 -
使用自定义结构、元组、对或数组。不要使用向量。向量用于动态内容,或者在编译时大小未知。使用更固定的数据结构,您的代码稍后会感谢您。上面的所有建议都强调了如何做到这一点。
标签: c++ text-files fstream