струнный поток и цикл - PullRequest
       9

струнный поток и цикл

1 голос
/ 06 декабря 2011

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

for (int img=0; img<5; img++)
{
stringstream stream;
string *s=new string("myfile");
stream << img << ".png"
s->append(stream.str());

.. other code

проблема в том, что когда программа в первый раз попадает в цикл, она работает нормально, второй поток времени не имеет значения "1.png", но имеет значение null ... поэтому при попытке открыть файл Я получаю нулевой указатель.

как мне это исправить?

Ответы [ 2 ]

3 голосов
/ 06 декабря 2011

Более простое решение:

for (int img = 0; img < 5; ++img)
{
    std::string s = "myfile" + ('0' + img) + ".png";

    // do something useful with s
}

Если числа больше 9, вместо них можно использовать std::to_string(img).

1 голос
/ 06 декабря 2011

Попробуйте выделить строку перед циклом.

string *s = new string("myfile");

for(;;;){} //forloop // используйте s здесь.

delete s; // всегда удаляем динамически выделенную память.

...