我的.txt文件包含以下格式的数据:
1.23,2.34,3.45
4.56,5.67,6.78
如何在矢量中插入数字
vector[1]={1.23,4.56,...}
vector[2]={2.34,5.67,...}
vector[3]={3.45,6.78,...}
代码
ifstream in("data.txt");
vector<vector<int> > v;
if (in) {
string line;
while (getline(in,line)) {
v.push_back(std::vector<int>());
stringstream split(line);
int value;
while (split >> value)
v.back().push_back(value);
}
}
答案 0 :(得分:0)
代码中的多个问题
您的内心vector
应为vector
float
或double
而不是int
。
您的value
变量也应为float
或double
阅读时需要经过分隔符(逗号)。
您需要创建尽可能多的内部向量,因为每行中都有值。我通过使用布尔first
变量完成了以下操作 - 我使用它来确保我只在读取第一行时创建向量。
push_back
to的内部向量的索引与被推回的行的值的列号相同。我使用变量col
来确定当前在一行上读取的列号是什么。
您需要与列数一样多的内部向量。每个内部向量的成员数与文件中的行数一样多。
ifstream in("data.txt");
vector<vector<double> > v;
bool first = false;
if (in)
{
string line;
while (getline(in,line))
{
istringstream split(line);
double value;
int col = 0;
char sep;
while (split >> value)
{
if(!first)
{
// Each new value read on line 1 should create a new inner vector
v.push_back(std::vector<double>());
}
v[col].push_back(value);
++col;
// read past the separator
split>>sep;
}
// Finished reading line 1 and creating as many inner
// vectors as required
first = true;
}
}