Я не совсем понимаю, как взять несколько строк, в которых есть числа, и преобразовать их в целое число. У меня есть несколько строк строк, которые хранятся в данных в целых, а затем вставьте их в двухмерные массивы, называемые значениями. Аналогичный вопрос был опубликован ранее в StackOverflow; однако это, кажется, не работает для меня. Я распечатал, что каждая строка в данных, каждая строка в данных выглядит следующим образом.
75
95 64
17 42 82
18 35 87 10
Однако, когда я выводю числа из значения, используя два цикла for в main, он выводит как это.
75
0
0
0
95
64
0
0
95
64
0
0
17
42
82
0
17
42
82
0
18
35
87
10
18
35
87
10
0
0
0
0
Я обнаружил, что в значениях массива есть 8 столбцов и 8 элементов, когда я печатал sizeof (values) и sizeof (values [0]); однако, похоже, что программа завершена как последний оператор печати, где я печатаю привет не происходит. Я предоставил код, который я использую ниже. Я хотел бы знать, почему это происходит
и как я могу это исправить? Спасибо.
//const char DELIMITER = ' ';
int **values, // This is your 2D array of values, read from the file.
**sums; // This is your 2D array of partial sums, used in DP.
int num_rows; // num_rows tells you how many rows the 2D array has.
// The first row has 1 column, the second row has 2 columns, and
// so on...
bool load_values_from_file(const string &filename) {
ifstream input_file(filename.c_str());
if (!input_file) {
cerr << "Error: Cannot open file '" << filename << "'." << endl;
return false;
}
input_file.exceptions(ifstream::badbit);
string line;
vector<string> data;
try {
while (getline(input_file, line)) {
data.push_back(line);
num_rows ++;
}
input_file.close();
} catch (const ifstream::failure &f) {
cerr << "Error: An I/O error occurred reading '" << filename << "'.";
return false;
}
for(int x = 0; x < data.size(); x++){
cout << data[x] << endl;
}
///1022925/preobrazovat-stroku-soderzhaschuy-neskolko-chisel-v-tselye-chisla
//Help on making multiple numbers in a string into seperate ints
values = new int*[num_rows];
vector<int> v;
for(int y = 0; y < data.size(); y++){
istringstream stream(data[y]);
values[y] = new int[y + 1];
int z = 0;
while(1) {
int n;
stream >> n;
if(!stream)
break;
values[y][z] = n;
z++;
}
z = 0;
}
sums = values;
return true;
}
int main(int argc, char * const argv[]) {
if (argc != 2) {
cerr << "Usage: " << argv[0] << " <filename>" << endl;
return 1;
}
string filename(argv[1]);
if (!load_values_from_file(filename)) {
return 1;
}
cout << sizeof(values) << endl;
cout << sizeof(values[0]) << endl;
for(int x = 0; x < sizeof(values); x++){
for(int y = 0; y < sizeof(values[x]); y++){
cout << values[x][y] << endl;
}
cout << endl;
}
cout << "hello" << endl;
return 0;
}