Нужно сохранить символы массива из цикла for куда-нибудь (с++)

Рейтинг: 1Ответов: 1Опубликовано: 15.02.2023

Мне нужно сохранить символы массива из цикла 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

Нужно создать массив, который будет хранить ваши данные (строки) и считывать можно сразу в элементы этого массива. Как пример:

#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[] т.к. последний вариант ограничивает вас в размере вводимой строки.