Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
1

Строки в с++ типа явовских

09.06.2014, 13:43. Показов 1288. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можно ли создать строковый класс типа явовских? Или есть ли готовые решения?

Пишу свой мультиплатформенный мини-фреймворм для удобной работы со строками на основе MinGW... (для отладке в винде и компиляции под андроид)

Когда-то на лекции расказывали что можно "подделать" даже арифметические операции над строками вроде "+" (для сложения самописных классов вроде таблиц).
Работы со строками предстоит много и заморачиваться с char* или LPCTSTR не хочу. К тому-же в андроиде и в винде слегка разные подходы к отображению отладочных строк.

Уже начал писать свой класс... но... Может есть готовые классы? Не хочу изобретать велоис

В иделале хочу наделать заготовок типа "фыва"+"йцук", "фыва"+123, "фыва"+true, ToInt, FromInt, ToFloat... А уж потом просто с ними работать... Потери скорости меня не пугают! Лишь бы код стал читабельным!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.06.2014, 13:43
Ответы с готовыми решениями:

Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа
Доброго времени суток, пишу класс содержащий несколько std::set от разных типов, нужно сделать...

Строки типа string
Словом, входящим в состав строки, назовѐм непрерывную последовательность символов, ограниченную...

Определить длину строки типа _TCHAR
Подскажите пожалуйста какой функцией можно определить длину строки типа _TCHAR?

Посимвольное чтение строки типа string
Здравствуйте! Подскажите, пожалуйста. У меня есть строка типа string, нужно все цифры вывести на...

13
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
09.06.2014, 13:46 2
Tester64, std::string, std::wstring
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
09.06.2014, 13:52  [ТС] 3
Цитата Сообщение от Jewbacabra Посмотреть сообщение
std::string
Андроидовский компилятор не знает что такое
#include <iostream>
Подозреваю что это чисто виндовая фишка...
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,687
09.06.2014, 13:54 4
Цитата Сообщение от Tester64 Посмотреть сообщение
Подозреваю что это чисто виндовая фишка...
это стандартный заголовок
внесен в стандарт
Цитата Сообщение от Tester64 Посмотреть сообщение
Андроидовский компилятор
или тупой или, скорее всего, не С++
1
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.06.2014, 13:54 5
Цитата Сообщение от Tester64 Посмотреть сообщение
Подозреваю что это чисто виндовая фишка...
Ошибаетесь. Всё что в std:: это из стандартной библиотеки C++.
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
09.06.2014, 14:27  [ТС] 6
Цитата Сообщение от ValeryS Посмотреть сообщение
или тупой или, скорее всего, не С++
Да нет, "с++" (или частично перемешанный с простым "с")!
Не все библиотеки находит. Но вроде в общих чертах должен работать... обычные строки char* успешно обрабатывает, но это так не удобно...

Собрал один отладочный проект и компилирую его одновременно в MinGW и в Android NDK. В винде вывод отправляю в консоль(цветом), а в андроиде в его отладчик LogCat (через тестовый ява проект). Работаю только ради скорости отладки и выполнения (в 2-10 раз быстрее чем ява) в андроиде! В винде компилится и запускается 3-4 секунды. Протестить в андроиде после мелких изменений могу секунд через 25-40(собрать в библиотеки, собрать в ява пакете, отправить на устройство/эмулятор, проинсталировать там, запустить). А хочу написать небольшой транслятор (микро язык программирования на сотню команд). Работа на 90% со строками и на 50% состоит из промежуточных отладок парсера...

Цитата Сообщение от Tulosba Посмотреть сообщение
Всё что в std:: это из стандартной библиотеки C++
Спасибо! Поищу... Может перетяну если нет в стандартной поставке..

Можете посоветовать учебники/уроки (электронные) где обьясняется как подделывать "+" между классами? Все равно ведь напишу свой класс-оболочку для строк... По тому что находил, std::string дает не больше 30% команд которые мне нужны
0
Модератор
Эксперт по электронике
8947 / 6713 / 921
Регистрация: 14.02.2011
Сообщений: 23,687
09.06.2014, 14:39 7
Цитата Сообщение от Tester64 Посмотреть сообщение
Да нет, "с++" (или частично перемешанный с простым "с")!
так он как раз может быть Си( с элементами плюсов)
есть ли new???
посмотри на ключи компилятора, бывает чтобы писать на плюсах нужен ключик, например Keil требует ключ c++
проверь пути к заголовочным файлам
наконец просто поиском поищи файл iostream

Добавлено через 1 минуту
Цитата Сообщение от Tester64 Посмотреть сообщение
По тому что находил, std::string дает не больше 30% команд которые мне нужны
создаешь свой класс наследник string и добавляешь что нужно
зачем с нуля писать?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.06.2014, 15:11 8
Цитата Сообщение от Tester64 Посмотреть сообщение
std::string дает не больше 30% команд которые мне нужны
Была тут тема на этот счет. Полистайте.
Цитата Сообщение от ValeryS Посмотреть сообщение
создаешь свой класс наследник string
На публичное наследование std::string не заточен.
0
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
09.06.2014, 15:30  [ТС] 9
Цитата Сообщение от ValeryS Посмотреть сообщение
создаешь свой класс наследник string и добавляешь что нужно
зачем с нуля писать?
Я и не собираюсь совсем с нуля - просто обвертку! Насколько я помню в стандарте команд 10-15 нужных... а мне нужно еще около 30-50 самописных (из тех что активно использовал в Java и Делфи) (randomstr, randomhex, copyfrom,...).

Цитата Сообщение от ValeryS Посмотреть сообщение
так он как раз может быть Си( с элементами плюсов)
есть ли new???
Пока не встречал new в примерах. Но пришлось постраться чтобы исходники хранить в cpp. Правда используется спец заголовок вида
C
1
2
3
extern "C" {
    JNIEXPORT void    JNICALL Java_com_wms_cpp_cppMain_SetString(JNIEnv* env, jobject obj, jstring str);
}
Цитата Сообщение от ValeryS Посмотреть сообщение
наконец просто поиском поищи файл iostream
Вроде есть... и даже в чужих исходниках что-то подобное нашел! Осталось понять как использовать и почему у меня не нашло, а у других находит...
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
09.06.2014, 16:54 10
Можете посоветовать учебники/уроки (электронные) где обьясняется как подделывать "+" между классами?
result_type operator+(const type1&left_arg,const type2&right_arg){...}
result_type type1::operator+(const type2&right_arg){...}
Вот и вся наука.
1
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
09.06.2014, 17:50 11
Лучший ответ Сообщение было отмечено Tester64 как решение

Решение

Цитата Сообщение от Tester64 Посмотреть сообщение
Андроидовский компилятор не знает что такое
#include <iostream>
В Android.mk:
LOCAL_CPPFLAGS += -std=c++11 -frtti -fexceptions

В Application.mk:
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION=4.8

Цитата Сообщение от EVP Посмотреть сообщение
PS: Книжку хотя бы пролистай
1
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
09.06.2014, 18:17  [ТС] 12
Цитата Сообщение от Renji Посмотреть сообщение
result_type operator+(const type1&left_arg,const type2&right_arg){...}
result_type type1::operator+(const type2&right_arg){...}
Вот и вся наука.
Спасибо! Для меня - наука! я последний раз видел это на доске лет 10-15 назад у очень нудного препода на "дополнительных" занятиях (за которые даже оценку не ставили). И понял лишь что это возможно... А сейчас решил выучить ради усиления своих возможностей на андроиде... За год-полтора одолел яву под андроид и окончательно понял какая это гадость - тормозит, исходники открыты(продавай после этого), "сборщик мусора" может убить программу без моего разрешения... и API - гадкий... Но язык там явно проще для новичка! Я месяца за 3-4 почти ВСЕ базовые конструкции явы понял - остальное изучение API. В с++ все намного сложнее. И API тоже сложнее... И война с версиями... и совместимостями... Вот и решил сначал простые мультиплатформенные удобные строки сделать...

Добавлено через 7 минут
Цитата Сообщение от EVP Посмотреть сообщение
В Android.mk:
LOCAL_CPPFLAGS += -std=c++11 -frtti -fexceptions
В Application.mk:
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION=4.8
Неожиданно заработало! Огромное спасибо - это прорыв!
Цитата Сообщение от EVP Посмотреть сообщение
PS: Книжку хотя бы пролистай
Бумажные не люблю! Очень тяжело угадать с версией и сложностью (я новичок!). Разные компиляторы, разные направления... Большинство учат сначала среде MSVisualStudio... Большинство учат создавать окошки или работе с базами данных... Проще задать яндексу/гуглу вопрос и в первой 10 обычно есть ответ.
Электронны
0
3 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,331
19.09.2015, 14:53 13
Я подключил ndk в Android Studio 1.3.2 все семплы запустились а вот
В Android.mk:
LOCAL_CPPFLAGS += -std=c++11 -frtti -fexceptions

В Application.mk:
APP_STL := gnustl_static
NDK_TOOLCHAIN_VERSION=4.8

Прописал. Но заголовки STL по прежнему не видны. Как быть ?? Как все же подключить STL в Android Studio 1.3.2??
0
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
19.09.2015, 15:24 14
Цитата Сообщение от yura91 Посмотреть сообщение
Прописал.
Уверен, что в нужное место?
Цитата Сообщение от yura91 Посмотреть сообщение
Но заголовки STL по прежнему не видны.
Как ты это определил? Какие заголовки?
NDK иногда делает некоторые нехорошие вещи со стандартной библиотекой.
Цитата Сообщение от yura91 Посмотреть сообщение
Как быть ??
Для начала покажи Android.mk.
Цитата Сообщение от yura91 Посмотреть сообщение
Как все же подключить STL в Android Studio 1.3.2??
Также как и в Эклипсе.
Развёрнуто можно почитать в книжке которую ранее указывал..
0
19.09.2015, 15:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2015, 15:24
Помогаю со студенческими работами здесь

Удаление символов из строки типа char
Существует ли какая-либо функция для удаления элементов строки char? Или придется &quot;сдвигать&quot; массив...

Ввод строки типа {a,b,c,d,f,{a,b,c,f},g,h,j}, исправить код
Доброго времени суток всем, в общем нужно мне реализовать такую задачу: Ввод строки типа...

Проверка на NULL строки типа Int
Добрый день! в С++ можно сказать второй день Нужно после совершения действий выводить данные что...

Список List. Добавляем строки типа char
Собственно, не получается в List добавлять корректно строки char. Нужно получить список из входных...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru