420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
1 | |
Строки в с++ типа явовских09.06.2014, 13:43. Показов 1305. Ответов 13
Метки нет (Все метки)
Можно ли создать строковый класс типа явовских? Или есть ли готовые решения?
Пишу свой мультиплатформенный мини-фреймворм для удобной работы со строками на основе MinGW... (для отладке в винде и компиляции под андроид) Когда-то на лекции расказывали что можно "подделать" даже арифметические операции над строками вроде "+" (для сложения самописных классов вроде таблиц). Работы со строками предстоит много и заморачиваться с char* или LPCTSTR не хочу. К тому-же в андроиде и в винде слегка разные подходы к отображению отладочных строк. Уже начал писать свой класс... но... Может есть готовые классы? Не хочу изобретать велоис В иделале хочу наделать заготовок типа "фыва"+"йцук", "фыва"+123, "фыва"+true, ToInt, FromInt, ToFloat... А уж потом просто с ними работать... Потери скорости меня не пугают! Лишь бы код стал читабельным!
0
|
09.06.2014, 13:43 | |
Ответы с готовыми решениями:
13
Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа Строки типа string Определить длину строки типа _TCHAR Посимвольное чтение строки типа string |
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 |
Андроидовский компилятор не знает что такое
#include <iostream> Подозреваю что это чисто виндовая фишка...
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
09.06.2014, 14:27 [ТС] | 6 |
Да нет, "с++" (или частично перемешанный с простым "с")!
Не все библиотеки находит. Но вроде в общих чертах должен работать... обычные строки char* успешно обрабатывает, но это так не удобно... Собрал один отладочный проект и компилирую его одновременно в MinGW и в Android NDK. В винде вывод отправляю в консоль(цветом), а в андроиде в его отладчик LogCat (через тестовый ява проект). Работаю только ради скорости отладки и выполнения (в 2-10 раз быстрее чем ява) в андроиде! В винде компилится и запускается 3-4 секунды. Протестить в андроиде после мелких изменений могу секунд через 25-40(собрать в библиотеки, собрать в ява пакете, отправить на устройство/эмулятор, проинсталировать там, запустить). А хочу написать небольшой транслятор (микро язык программирования на сотню команд). Работа на 90% со строками и на 50% состоит из промежуточных отладок парсера... Спасибо! Поищу... Может перетяну если нет в стандартной поставке.. Можете посоветовать учебники/уроки (электронные) где обьясняется как подделывать "+" между классами? Все равно ведь напишу свой класс-оболочку для строк... По тому что находил, std::string дает не больше 30% команд которые мне нужны
0
|
Модератор
8950 / 6716 / 921
Регистрация: 14.02.2011
Сообщений: 23,706
|
|
09.06.2014, 14:39 | 7 |
так он как раз может быть Си( с элементами плюсов)
есть ли new??? посмотри на ключи компилятора, бывает чтобы писать на плюсах нужен ключик, например Keil требует ключ c++ проверь пути к заголовочным файлам наконец просто поиском поищи файл iostream Добавлено через 1 минуту создаешь свой класс наследник string и добавляешь что нужно зачем с нуля писать?
0
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
||||||
09.06.2014, 15:30 [ТС] | 9 | |||||
Я и не собираюсь совсем с нуля - просто обвертку! Насколько я помню в стандарте команд 10-15 нужных... а мне нужно еще около 30-50 самописных (из тех что активно использовал в Java и Делфи) (randomstr, randomhex, copyfrom,...).
Пока не встречал new в примерах. Но пришлось постраться чтобы исходники хранить в cpp. Правда используется спец заголовок вида
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
09.06.2014, 16:54 | 10 |
result_type type1::operator+(const type2&right_arg){...} Вот и вся наука.
1
|
510 / 272 / 60
Регистрация: 14.12.2010
Сообщений: 548
|
|
09.06.2014, 17:50 | 11 |
Сообщение было отмечено Tester64 как решение
Решение
В Android.mk:
LOCAL_CPPFLAGS += -std=c++11 -frtti -fexceptions В Application.mk: APP_STL := gnustl_static NDK_TOOLCHAIN_VERSION=4.8
1
|
420 / 357 / 47
Регистрация: 22.05.2013
Сообщений: 2,518
|
|
09.06.2014, 18:17 [ТС] | 12 |
Спасибо! Для меня - наука! я последний раз видел это на доске лет 10-15 назад у очень нудного препода на "дополнительных" занятиях (за которые даже оценку не ставили). И понял лишь что это возможно... А сейчас решил выучить ради усиления своих возможностей на андроиде... За год-полтора одолел яву под андроид и окончательно понял какая это гадость - тормозит, исходники открыты(продавай после этого), "сборщик мусора" может убить программу без моего разрешения... и API - гадкий... Но язык там явно проще для новичка! Я месяца за 3-4 почти ВСЕ базовые конструкции явы понял - остальное изучение API. В с++ все намного сложнее. И API тоже сложнее... И война с версиями... и совместимостями... Вот и решил сначал простые мультиплатформенные удобные строки сделать...
Добавлено через 7 минут Неожиданно заработало! Огромное спасибо - это прорыв! Бумажные не люблю! Очень тяжело угадать с версией и сложностью (я новичок!). Разные компиляторы, разные направления... Большинство учат сначала среде 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 |
Уверен, что в нужное место?
Как ты это определил? Какие заголовки? NDK иногда делает некоторые нехорошие вещи со стандартной библиотекой. Для начала покажи Android.mk. Также как и в Эклипсе. Развёрнуто можно почитать в книжке которую ранее указывал..
0
|
19.09.2015, 15:24 | |
19.09.2015, 15:24 | |
Помогаю со студенческими работами здесь
14
Удаление символов из строки типа char Ввод строки типа {a,b,c,d,f,{a,b,c,f},g,h,j}, исправить код Проверка на NULL строки типа Int Список List. Добавляем строки типа char Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |