C++ 无法在向量上迭代
所以,我想从一个.txt文件中读取值,值是非常简单的四个浮点值,在同一行上。 我写道:C++ 无法在向量上迭代,c++,vector,most-vexing-parse,C++,Vector,Most Vexing Parse,所以,我想从一个.txt文件中读取值,值是非常简单的四个浮点值,在同一行上。 我写道: int read_calibration () { std::ifstream input("floor.txt"); if (!input.good()) { cout << "floor info file does not exist!" << endl; return -1; } std::vector<float> d
int read_calibration () {
std::ifstream input("floor.txt");
if (!input.good())
{
cout << "floor info file does not exist!" << endl;
return -1;
}
std::vector<float> data(std::istream_iterator<float>(input),
std::istream_iterator<float>());
for (std::vector<float>::iterator it = data.begin() ; it != data.end(); ++it)
std::cout << ' ' << *it;
return 0;
}
int读取校准(){
std::ifstream输入(“floor.txt”);
如果(!input.good())
{
无法最令人烦恼的解析:-/
使用{}
std::vector<float> data{std::istream_iterator<float>(input),
std::istream_iterator<float>()};
std::矢量数据{std::istream_迭代器(输入),
std::istream_iterator()};
或
auto data=std::vector(std::istream_迭代器(输入),
std::istreamu迭代器();
最烦人的解析:-/
使用{}
std::vector<float> data{std::istream_iterator<float>(input),
std::istream_iterator<float>()};
std::矢量数据{std::istream_迭代器(输入),
std::istream_iterator()};
或
auto data=std::vector(std::istream_迭代器(输入),
std::istreamu迭代器();
改为说:
std::vector<float> data(std::istream_iterator<float>(input), {});
std::vector数据(std::istream_迭代器(输入),{});
您的原始代码不是定义变量,而是声明函数。改为说:
std::vector<float> data(std::istream_iterator<float>(input), {});
std::vector数据(std::istream_迭代器(输入),{});
您的原始代码不是定义变量,而是声明一个函数。@vsoftco:这不是最麻烦的一个;它只是一种正常的麻烦。@KerrekSB有什么不同吗?;)我认为它总是被称为“最麻烦”。对我来说是“正常的”是没有参数的,最大的是有参数的。@KerrekSB我想这正是创造术语“最烦人的解析”的确切情况@vsoftco:它不是最烦人的一个;它只是一种正常的烦人。@KerrekSB有区别吗?;)我认为它总是被称为“最烦人的”。对我来说是“正常的”是没有参数的,而most是有参数的。@KerrekSB我认为正是这种情况创造了术语“最麻烦的解析”,或者在OP不能使用C++11的情况下用括号括起一个参数。或者在OP不能使用C++11的情况下用括号括起一个参数。