Форум программистов, компьютерный форум CyberForum.ru

Ошибка при вызове wstring.erase - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Раздельная компиляция Namespace - Реализовать двусвязный список http://www.cyberforum.ru/cpp-beginners/thread1241505.html
В книге Страуструпа описана модульность с помощью namespace: stack.c - хранит реализацию stack.h- интерфейс user.c - использование. Там есть задачка реализовать двусвязный список по такому принципу. С алгоритмом списка проблем нет, а вот с именами беда. Для теста написал маленькую функцию, но и она не компилится ( main.obj : error LNK2019: ссылка на неразрешенный внешний символ "int...
C++ Как сложить две временные отметки в виде дни часы: минуты: секунды Здравствуйте! Подскажите пожалуйста, как сложить две временные отметки в виде дни часы: минуты: секунды? Спасибо! http://www.cyberforum.ru/cpp-beginners/thread1241485.html
C++ Обязательно ли объявление виртуального деструктора в абстрактном классе
Недавно выполнял задание, и забыл в абстрактном классе(использовалось наследование) объявить виртуальный диструктор. С точки зрения профессионального программирования, является ли это серьёзной ошибкой?
Поставить пароль на архив C++
Всем привет. Мне нужно программно сделать архив с паролем. Может есть такая библиотека, что бы там была такая функция? Я думаю использовать zlib, а там вроде такого нет, так что придется добавлять самому. Что посоветуете? Спасибо.
C++ Дружественный метод класса и ошибка доступа http://www.cyberforum.ru/cpp-beginners/thread1241423.html
class B; class A { public: void f(B& b); }; class B { private:
C++ Как подключить obj файл к проекту? Всем привет! Нужно подключить obj файл к проекту в котором есть нужный класс. Как это сделать в MVS 2010? подробнее

Показать сообщение отдельно
elektron5
Заблокирован
12.08.2014, 16:49  [ТС]     Ошибка при вызове wstring.erase
Цитата Сообщение от Ilot Посмотреть сообщение
На первой иттерации идет обращение за пределами строки?
всё верно , не заметил, но тогда уж надо делать так (что явно перебор )
C++
1
2
3
4
5
6
7
for (auto it = testString.end() - 1; it >= testString.begin(); it--)
{
    if (*it == L'I')
        testString.erase(it, testString.end());
    if (it == testString.begin())
        break;
};
Цитата Сообщение от Ilot Посмотреть сообщение
А первый вариант ругается так как вы передаете в его параметры разные типы итераторов и естесствено компилятор будет пытаться вызвать "не ту" функцию.
я думал, что итераторы - это простые указатели и разницы никакой, что обратный что нет - т.к. указывают на одну и ту же область памяти, ну да ладно, ошибался значит.
Цитата Сообщение от Ilot Посмотреть сообщение
Если вам это поможет то правильное решение примерно вот такое:
А это что за выкрутас it.base() - 1 ? Что он делает с обратным итератором? Наверное к не обратному приводит, но как ?

Цитата Сообщение от Ilot Посмотреть сообщение
Хотя я пожалуй промолчу про методы rfind
да, хороший способ, как то я и не подумал

Добавлено через 1 час 57 минут
Цитата Сообщение от Ilot Посмотреть сообщение
testString.erase(it.base() - 1
Объясните хоть что значит эта строка. По описанию функции base() не могу понять что она делает вообще и зачем нужна ...
 
Текущее время: 11:22. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru