Нужно сохранить символы массива из цикла for куда-нибудь (с++)
Мне нужно сохранить символы массива из цикла for куда-нибудь.
Вот мой код:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
char comand[] = {"your comand"};
int num;
cout << "Введите количество команд ";
cin >> num;
for (int i = 0; i < num; i++)
{
cout << "\n Введите название команды ";
cin >> comand;
//здесь массив должен сохранять символы куда-то, и делать так до тех
//пор пока не кончится цикл,а после этого я буду работать с сохраненными файлами
}
}
Ответы (1 шт):
Автор решения: needKVAS
→ Ссылка
Нужно создать массив, который будет хранить ваши данные (строки) и считывать можно сразу в элементы этого массива. Как пример:
#include <iostream>
#include <string>
#include <limits>
#include <vector>
int main(int argc, char *argv[]) {
//Вектор со строками для хранения команд
std::vector<std::string> commands;
int num = 0;
//Нам нужно положительное число
while (num <= 0) {
std::cout << "Введите количество команд: ";
std::cin >> num;
if (std::cin.fail()) { //Если произошла ошибка
std::cin.clear(); //Сбрасываем флаг ошибки
}
//Чистим буфер т.к. там остался как минимум '\n'
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}
//Изменяем размер вектора в соответствии с введённым числом
commands.resize(num);
for (int i = 0; i < commands.size(); i++)
{
std::cout << "Введите название команды: ";
//Считываем команды-строки сразу в элементы вектора
std::getline(std::cin, commands[i]);
}
//Работаем с вектором
for (int i = 0; i < commands.size(); i++)
{
std::cout << commands[i] << "\n";
}
}
Здесь std::getline(std::cin, commands[i]); используется вместо std::cin >> commands[i]; т.к. во втором случае считывание будет производится по словам, а не по строкам.
std::string предпочтительнее чем char comand[] т.к. последний вариант ограничивает вас в размере вводимой строки.