У меня такой код:

#include <fstream>
#include <iostream>

using namespace std;


int main() {
  ofstream os;
  char fileName[] = "0.txt";
  for(int i = '1'; i <= '5'; i++)
  {
     fileName[0] = i;
     os.open(fileName);
     os << "Hello" << "\n";
     os.close();
  }
  return 0;
}

Цель состоит в том, чтобы записать вывод моего кода в несколько файлов .txt, скажем, до 64 раз. Когда я изменяю этот цикл на запуск более 10, то есть

for(int i = '1'; i <= '10'; i++)

Я получаю следующую ошибку:

предупреждение: символьная константа слишком длинная для своего типа

Есть идеи, как писать более чем в 10 файлов? Более того, как мне написать число после каждого «Привет», например «Привет1 ... Привет10»?

Приветствия .

-1
Dimitri_896 26 Ноя 2021 в 17:34

1 ответ

Лучший ответ

Я считаю, что причина, по которой вы получаете это предупреждение, заключается в том, что вы пытаетесь назначить два символа в один слот массива char:

fileName[0] = i;

Потому что когда i = 10;, это уже не один символ.

#include <fstream>
#include <iostream>
#include <string>//I included string so that we can use std::to_string

using namespace std;


int main() {
    ofstream os;
    string filename;//instead of using a char array, we'll use a string
    for (int i = 1; i <= 10; i++)
    {
        filename = to_string(i) + ".txt";//now, for each i value, we can represent a unique filename
        os.open(filename);
        os << "Hello" << std::to_string(i) << "\n";//as for writing a number that differs in each file, we can simply convert i to a string
        os.close();
    }
    return 0;
}

Надеюсь, это разрешило проблемы так, как вам понравилось; дайте мне знать, если вам нужны дополнительные разъяснения! (:

0
Jyri Keir 26 Ноя 2021 в 18:00
1
Идеально! Решил мою проблему сразу;)
 – 
Dimitri_896
26 Ноя 2021 в 18:07