gpt4 book ai didi

c++ - 将字符串转换为二维数组

转载 作者:行者123 更新时间:2023-11-28 00:41:31 25 4
gpt4 key购买 nike

我有一个输入文件,其中第一列由字符串构成,其余为数值。

E2   1880    1   0   67.50   10.50   -1.00   -1.00
E2 1880 1 4 66.50 11.50 -1.00 -1.00
E2 1880 1 8 66.50 11.50 -1.00 -1.00
E2 1880 1 12 65.50 11.50 -1.00 -1.00
E2 1880 1 16 64.50 11.50 -1.00 -1.00
E2 1880 1 20 63.50 12.50 -1.00 -1.00
E2 1880 2 0 63.50 12.50 -1.00 -1.00
E2 1880 2 4 62.50 12.50 -1.00 -1.00
E2 1880 2 8 62.50 12.50 -1.00 -1.00

问题是我需要将输入文件存储在二维数组中,但是当我尝试这样做时,我只得到 0,我怀疑这是因为在第一列中没有数值..

这里是代码

sprintf(FILE,"test.dat");
IN.open(FILE,ios::in);
if(IN.is_open()){
while ( IN.good() ) {
getline (IN,line);
++data;
}
data -= 1;
}
IN.clear();
IN.close();

double** buf;
buf = new double* [data];
for(int k=0;k<data;k++) buf[k] = new double[COL];
for(int k=0;k<data;k++){
for(int j=0;j<COL;j++) buf[k][j] = 0.;
}

sprintf(FILE,"test.dat");
IN.open(FILE,ios::in);
if(IN.is_open()){
for(int j=0;j<data;j++){
for(int k=0;k<COL;k++){
IN >> buf[j][k];
}
}
IN.clear();
IN.close();

非常感谢!

最佳答案

#include <vector>
#include <string>
#include <fstream>
#include <sstream>
#include <iostream>
using namespace std;

int main()
{
vector<vector<double>> data;
ifstream file("test.dat");
string line;
while (getline(file, line))
{
data.push_back(vector<double>());
stringstream ss(line);
// skip first column
{ string temp; ss >> temp; }
double value;
while (ss >> value)
{
data.back().push_back(value);
}
}

for (int y = 0; y < data.size(); y++)
{
for (int x = 0; x < data[y].size(); x++)
{
cout << data[y][x] << " ";
}
}
cout << endl;
}

关于c++ - 将字符串转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18641891/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com