Форум программистов, компьютерный форум 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? подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
12.08.2014, 14:27     Ошибка при вызове wstring.erase
Не хочу вмешиваться, но не кажется ли вам, что здесь:
C++
1
2
3
4
5
for (auto it = testString.end(); it != testString.begin(); it--)
{
    if (*it == L'^')
        testString.erase(it, testString.end());
};
На первой иттерации идет обращение за пределами строки?
А первый вариант ругается так как вы передаете в его параметры разные типы итераторов и естесствено компилятор будет пытаться вызвать "не ту" функцию.
Если вам это поможет то правильное решение примерно вот такое:
C++
1
2
3
4
5
    std::wstring testString = L"SHAKE YOUR TITS (. )^( .)";
    for (auto it = testString.rbegin(); it != testString.rend(); ++it) {
        if (*it == L'^')
            testString.erase(it.base() - 1 , testString.end());
    }
Хотя я пожалуй промолчу про методы rfind. Надеюсь вы их сами найдете
 
Текущее время: 01:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru