Из файла нужно считать массив в таблицу, а затем производить манипуляции с этой таблицей:
Вот пример файла, из которого нужно считать массив:
char* myvec5 [5][5] = {
{"str00","str01","str02","str03","str04"},//sometext
{"str00","str01","str02","str03","str04"},
{"str00","str01","str02","str03","str04"},
{"str00","str01","str02", "str03","str04"},
{"str00","str01","str02","str03","str04"}
};
Файл может содержать различный код на с++. Ну, вот наработки кода:
#include<iostream>
#include<cstdlib>
#include<string>
#include<fstream>
#include<algorithm>
#include<iterator>
#include<sstream>
using namespace std;
string **row_add(string **arr, int &R, int C, int pos) {
R++;
string **new_arr = new string*[R];
for (int i = 0; i < R; i++)
new_arr[i] = new string[C];
for (int i = 0, ti = 0; i < R; i++) {
for (int j = 0; j < C; j++)
if (i == pos)
new_arr[i][j] = "row";
else
new_arr[i][j] = arr[ti][j];
if (i != pos)
ti++;
}
for (int i = 0; i < R - 1; i++)
delete[] arr[i];
delete[] arr;
arr = NULL;
return new_arr;
}
string **col_add(string **arr, int R, int &C, int pos) {
C++;
string **new_arr = new string*[R];
for (int i = 0; i < R; i++)
new_arr[i] = new string[C];
for (int i = 0; i < R; i++)
for (int j = 0, tj = 0; j < C; j++) {
if (j == pos)
new_arr[i][j] = "col";
else new_arr[i][j] = arr[i][tj];
if (j != pos)
tj++;
}
for (int i = 0; i < R; i++)
delete[] arr[i];
delete[] arr;
arr = NULL;
return new_arr;
}
string **col_delete(string **arr, int R, int &C, int pos) {
for (int j = pos; j < C - 1; j++) {
for (int i = 0; i < R; i++) {
arr[i][j] = arr[i][j + 1];
}
}
C--;
return arr;
}
string **row_delete(string **arr, int &R, int C, int pos) {
for (int i = pos; i < R - 1; i++) {
for (int j = 0; j < C; j++) {
arr[i][j] = arr[i + 1][j];
}
}
R--;
return arr;
}
int main() {
string file;
cout << "Enter a name of file: ";
cin >> file;
string filename = file + ".txt";
ifstream fin;
fin.open(filename);
if (!fin) {
cout << "Error reading file.\n";
exit(1);
}
string line, line2;
int row, col;
// fin >> row >> col;
fin >> line >> line2;
replace_if(line.begin(), line.end(),
[](const char& c) { return ((c == '[') || (c == ']')); },
' ');
replace_if(line2.begin(), line2.end(),
[](const char& c) { return ((c == '[') || (c == ']')); },
' ');
row = atoi(line.c_str());
col = atoi(line2.c_str());
string **a = new string *[row];
for (int i = 0; i < row; i++) {
a[i] = new string[col];
}
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
fin >> a[i][j];
// getline(fin, a[i][j]);
replace_if(a[i][j].begin(), a[i][j].end(),
[](const char& c) { return ((c == '{') || (c == ',') || (c == '}')); },
' ');
auto it = std::remove_if(a[i][j].begin(), a[i][j].end(), [&](char c) { return c == '"'; });
a[i][j] = std::string(a[i][j].begin(), it);
// getline(fin, a[i][j], ' ');
// fin.ignore();
cout << a[i][j] << "\t ";
}
cout << endl;
}
char key;
bool menu = true;
while (menu) {
cout << "***MENU***" << endl;
cout << "1.Add column\n";
cout << "2.Add row\n";
cout << "3.Delete column\n";
cout << "4.Delete row\n";
cout << "5.Save results in file\n";
cout << "0.Exit\n";
cout << "Choose your action. Type a command: \n";
cin >> key;
switch (key) {
case '1':
int colpos;
cout << "\nEnter the number of column to insert: \n";
cin >> colpos;
a = col_add(a, row, col, colpos);
cout << "\nNew array: \n";
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << a[i][j] << "\t ";
}
cout << endl;
}
break;
case '2':
int rowpos;
cout << "\nEnter the number of row to insert: \n";
cin >> rowpos;
a = row_add(a, row, col, rowpos);
cout << "\nNew array: \n";
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << a[i][j] << "\t ";
}
cout << endl;
}
break;
case '3':
int NumberDeleteCol;
cout << "\nEnter the number of the column to remove: \n";
cin >> NumberDeleteCol;
a = col_delete(a, row, col, NumberDeleteCol);
cout << "\nNew array: \n";
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << a[i][j] << "\t ";
}
cout << endl;
}
break;
case '4':
int NumberDeleteRow;
cout << "\nEnter the number of the row to delete: \n";
cin >> NumberDeleteRow;
a = row_delete(a, row, col, NumberDeleteRow);
cout << "\nNew array: \n";
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
cout << a[i][j] << "\t ";
}
cout << endl;
}
break;
case '5':
{
ofstream ofout;
ofout.open(filename);
ofout << row << " " << col << "\n";
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
ofout << a[i][j] << " ";
}
ofout << endl;
}
ofout.close();
break;
}
case '0':
exit(0);
break;
default:
cout << "You entered wrong command! Please, try another: \n";
break;
}
}
system("pause");
return 0;
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вот код для подключения Sql Lite файла но не может открыть Db файл в правильном директории
Здравствуйтедве недели назад столкнулся с проблемой и никак не могу ее решить