Я кровавый новичок в C ++.Я пытаюсь читать серийно пронумерованные файлы.Для этого мне нужно создать строки для имен файлов с возрастающим индексом файла.
Мой код работает для индексов до 70. Когда индекс равен 71, внезапно возникает исключение.
Вот мой код:
for (int i = 0; i < 110; i++)
{
std::string index = std::to_string(i);
std::string filenameA = "fileA"+ index + ".png"; // Here the Exception is thrown
std::string filenameB = "fileB"+ index + ".png";
std::string filenameC = "fileC"+ index + ".png";
...
}
Когда i=71
я получаю нарушение прав чтения.Исключение выдается в файле xutility
при этом методе:
inline void _Container_base12::_Orphan_all() noexcept
{ // orphan all iterators
#if _ITERATOR_DEBUG_LEVEL == 2
if (_Myproxy != nullptr)
{ // proxy allocated, drain it
_Lockit _Lock(_LOCK_DEBUG);
for (_Iterator_base12 **_Pnext = &_Myproxy->_Myfirstiter;
*_Pnext != nullptr; *_Pnext = (*_Pnext)->_Mynextiter)
(*_Pnext)->_Myproxy = nullptr;
_Myproxy->_Myfirstiter = nullptr; // Here the exception is thrown
}
#endif /* _ITERATOR_DEBUG_LEVEL == 2 */
}
Странно, код работает без проблем, если отсутствует .
в ".png"
.Кроме того, если я изменяю порядок файлов, например, как это
std::string filenameB = "fileB"+ index + ".png";
std::string filenameC = "fileC"+ index + ".png";
std::string filenameA = "fileA"+ index + ".png";
, ошибка все еще происходит в std::string filenameA = "fileA"+ index + ".png";
Я действительно не понимаю, почему конкатенация строк завершается неудачнодля этого особого случая.