Функция вставки в C ++ String разрушает приложение при запуске более одного раза - PullRequest
0 голосов
/ 30 марта 2012

У меня проблема с моей программой.Когда он запускает строку:

P.insert(P.find('-'), "+");

, когда все в порядке (функция сделала то, что я хотел, положив плюс перед минусом).Но когда я запускаю его снова, он выдает сообщение «Это приложение запросило завершение работы программы необычным способом».ошибка.
"P" (заглавные буквы), конечно, строковая переменная.
Я использую wxDev-C ++ build 7.4.1.13 и не хочу его менять, если вы об этом попросите.Система в Windows 7 Ultimate 32-разрядная.

Пожалуйста, для быстрого воспроизведения, так как приближается крайний срок.

Ответы [ 2 ]

4 голосов
/ 30 марта 2012

Возможно, во второй раз нет '-', поэтому найдите return -1, и затем вы попытаетесь вставить в позицию -1.Так что проверьте возвращаемое значение find

int index = P.find('-');
if (index != -1)
    P.insert(index, '+');

И я тоже согласен с Dennis comment ..

0 голосов
/ 30 марта 2012

Ваш код будет заменен только при первом появлении "-". Это ваше требование?

Если нет, возьми это

int start = 0;
while (true) {
  int index = P.find('-', start);
  if (index < 0) break;
  P.insert(index, '+');
  start = index + 2;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...