Komplikacje z tworzeniem plików w petli

0

Siemka!
Chcialem dzisiaj napisac program który stworzy pliki. Niestety wywala mi blad którego tekst jest w nazwach tych plikow.
Wiem... dziwnie to brzmi. Najlepiej sami zobaczcie.

 #include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    for(int i = 1 ; i < 50 ; i++){
        ofstream("hi" +i);

    };
    return 0;
}

Prosiłbym was o pomoc. Nie mam pojecia dlaczego tak się dzieje.
Z góry dzięki!

0

co chciałeś osiągnąć dodając do ciągu znaków inta?

0

"hi" + to_string(i)

To co wcześniej zrobiłeś to arytmetyka na wskaźnikach. "hi" jest traktowany jako wskaźnik, a wskaźnik + liczba daje wskaźnik na następne adresy. Te następne adresy już nie należą do Ciebie dla i > 1, więc program się wywala.

0

To powinno zadziałać

ofstream("hi"+(char)i);
0

w teorii można tak:

std::string Itoa(int number,unsigned int base=10)
{
    bool minus=number<0;
    number*=1-2*minus;
    std::string returner;
    while (number%(int)base!=number)
    {
        returner+=char(number%base+'0');
        number/=base;
    }
    returner+=char(number+'0');
    if (minus)
        returner+="-";
    for (unsigned int i=0; i<returner.size()/2; ++i)
        std::swap(returner[i],returner[returner.size()-i-1]);
    return returner;
}

ofstream(string("hi"+Itoa(i)).c_str()); 

1 użytkowników online, w tym zalogowanych: 0, gości: 1