F
fdm
Hi I have a .txt file containing:
[-0.00231844, -0.02326, 0.0484723, 0.0782189, 0.0917853,
0.119546, -0.00335514, -0.217619, -0.107065, 0, -0.0329693, -0.148395,
0.104663, -0.550282, -1.26802, -0.705694, 0.0873308, -0.309962, -0.802861,
0, 0.063379,
0.398289, -1.44105, -1.53938, -1.7608, -1.38484, -0.711425, -1.10221, -1.59358,
0,
0.298058, -0.564321, -1.91097, -3.58063, -6.30183, -4.78945, -1.61198, -0.70215,
-0.954023, 0,
0.54965, -0.57544, -2.33652, -6.10376, -4.54323, -4.77601, -4.48725, -0.489267,
-0.570523, 0,
0.668925, -0.46068, -2.42157, -4.74326, -12.8757, -6.57763, -1.16318, -3.09268,
-0.411637, 0,
0.0390142, -0.273687, -0.624816, -1.51086, -2.18197, -1.86934,
0.297622, -1.07632, -0.0820767, 0, 0.0166208, -0.543326, 0.543721, -1.87936,
1.06337, 0.0752932, -0.0704278, -0.307334, -0.99684, 0,
0.00486263, -0.12788, -0.25644, -0.491107,
0.201335, -1.09141, -0.694021, -0.24188, -0.212387, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -0.000112593, 0.0110926,
0.0167261, -0.049946, -0.0783788, -0.0384529,
0.0407556, -0.154947, -0.0463077, 0, -0.0182507, 0.00359299, 0.00784705,
0.270986, 1.90373, 0.0225429, -0.684401, -0.250102, 0.0345052,
0, -0.0636621, -0.364021, -1.0357, -2.70395, -4.77634, -0.987079, -0.837127,
1.46826, 0.682614,
0, -0.0313031, -0.717254, -0.545265, -17.2006, -31.0422, -20.0047, -2.02679,
-1.18301, 0.0228328, 0, -0.0125886, -4.34123,
0.0787134, -45.9453, -66.6283, -50.7082, 1.52779, -1.68643, -0.339206, 0,
0.65181, -8.32657, 6.24457, -37.9488, -110.562, -54.1226,
3.39012, -0.0921196, 0.12512, 0, 1.67071, 0.694154, -3.71556,
9.19359, -8.64445, 14.5316, -1.12059, -0.852576, 0.59615, 0,
0.001542, -0.94513, -0.844656, -6.95102, 1.63441, -5.0893, -3.16847,
1.19829, 0.0257344, 0, -0.186464, -1.54877, 0.321253,
0.403886, -0.983199, -1.91005, -0.53617, -0.353148, -0.0942512, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0]
Now I would like to read this array into a C++ container/array so I can do
something like:
double first = container[0]; // -0.00231844
The number of elements in the file can vary from file to file so I was
thinking of using a std::vector. The below code:
std::vector<std::string> file;
std::string line;
file.clear();
std::ifstream infile (parameters_path.c_str(), std::ios_base::in);
while (getline(infile, line, '\n')) {
file.push_back (line);
}
std::cout << "Read " << file.front() << " lines.\n";
stores the whole array from the file as a single string in the vector. But I
still need to "tokenize" this string into its double parts. Before throwing
myself into cumbersome code I would like to hear if anyone has a good idea
to do this the right way.
[-0.00231844, -0.02326, 0.0484723, 0.0782189, 0.0917853,
0.119546, -0.00335514, -0.217619, -0.107065, 0, -0.0329693, -0.148395,
0.104663, -0.550282, -1.26802, -0.705694, 0.0873308, -0.309962, -0.802861,
0, 0.063379,
0.398289, -1.44105, -1.53938, -1.7608, -1.38484, -0.711425, -1.10221, -1.59358,
0,
0.298058, -0.564321, -1.91097, -3.58063, -6.30183, -4.78945, -1.61198, -0.70215,
-0.954023, 0,
0.54965, -0.57544, -2.33652, -6.10376, -4.54323, -4.77601, -4.48725, -0.489267,
-0.570523, 0,
0.668925, -0.46068, -2.42157, -4.74326, -12.8757, -6.57763, -1.16318, -3.09268,
-0.411637, 0,
0.0390142, -0.273687, -0.624816, -1.51086, -2.18197, -1.86934,
0.297622, -1.07632, -0.0820767, 0, 0.0166208, -0.543326, 0.543721, -1.87936,
1.06337, 0.0752932, -0.0704278, -0.307334, -0.99684, 0,
0.00486263, -0.12788, -0.25644, -0.491107,
0.201335, -1.09141, -0.694021, -0.24188, -0.212387, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -0.000112593, 0.0110926,
0.0167261, -0.049946, -0.0783788, -0.0384529,
0.0407556, -0.154947, -0.0463077, 0, -0.0182507, 0.00359299, 0.00784705,
0.270986, 1.90373, 0.0225429, -0.684401, -0.250102, 0.0345052,
0, -0.0636621, -0.364021, -1.0357, -2.70395, -4.77634, -0.987079, -0.837127,
1.46826, 0.682614,
0, -0.0313031, -0.717254, -0.545265, -17.2006, -31.0422, -20.0047, -2.02679,
-1.18301, 0.0228328, 0, -0.0125886, -4.34123,
0.0787134, -45.9453, -66.6283, -50.7082, 1.52779, -1.68643, -0.339206, 0,
0.65181, -8.32657, 6.24457, -37.9488, -110.562, -54.1226,
3.39012, -0.0921196, 0.12512, 0, 1.67071, 0.694154, -3.71556,
9.19359, -8.64445, 14.5316, -1.12059, -0.852576, 0.59615, 0,
0.001542, -0.94513, -0.844656, -6.95102, 1.63441, -5.0893, -3.16847,
1.19829, 0.0257344, 0, -0.186464, -1.54877, 0.321253,
0.403886, -0.983199, -1.91005, -0.53617, -0.353148, -0.0942512, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0]
Now I would like to read this array into a C++ container/array so I can do
something like:
double first = container[0]; // -0.00231844
The number of elements in the file can vary from file to file so I was
thinking of using a std::vector. The below code:
std::vector<std::string> file;
std::string line;
file.clear();
std::ifstream infile (parameters_path.c_str(), std::ios_base::in);
while (getline(infile, line, '\n')) {
file.push_back (line);
}
std::cout << "Read " << file.front() << " lines.\n";
stores the whole array from the file as a single string in the vector. But I
still need to "tokenize" this string into its double parts. Before throwing
myself into cumbersome code I would like to hear if anyone has a good idea
to do this the right way.