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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
#1

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

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

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

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

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

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

В иделале хочу наделать заготовок типа "фыва"+"йцук", "фыва"+123, "фыва"+true, ToInt, FromInt, ToFloat... А уж потом просто с ними работать... Потери скорости меня не пугают! Лишь бы код стал читабельным!
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jewbacabra
Эксперт PHP
2112 / 1776 / 655
Регистрация: 24.04.2014
Сообщений: 5,095
09.06.2014, 13:46     Строки в с++ типа явовских #2
Tester64, std::string, std::wstring
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
09.06.2014, 13:52  [ТС]     Строки в с++ типа явовских #3
Цитата Сообщение от Jewbacabra Посмотреть сообщение
std::string
Андроидовский компилятор не знает что такое
#include <iostream>
Подозреваю что это чисто виндовая фишка...
ValeryS
Модератор
6505 / 4971 / 459
Регистрация: 14.02.2011
Сообщений: 16,471
09.06.2014, 13:54     Строки в с++ типа явовских #4
Цитата Сообщение от Tester64 Посмотреть сообщение
Подозреваю что это чисто виндовая фишка...
это стандартный заголовок
внесен в стандарт
Цитата Сообщение от Tester64 Посмотреть сообщение
Андроидовский компилятор
или тупой или, скорее всего, не С++
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.06.2014, 13:54     Строки в с++ типа явовских #5
Цитата Сообщение от Tester64 Посмотреть сообщение
Подозреваю что это чисто виндовая фишка...
Ошибаетесь. Всё что в std:: это из стандартной библиотеки C++.
Tester64
395 / 356 / 43
Регистрация: 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% команд которые мне нужны
ValeryS
Модератор
6505 / 4971 / 459
Регистрация: 14.02.2011
Сообщений: 16,471
09.06.2014, 14:39     Строки в с++ типа явовских #7
Цитата Сообщение от Tester64 Посмотреть сообщение
Да нет, "с++" (или частично перемешанный с простым "с")!
так он как раз может быть Си( с элементами плюсов)
есть ли new???
посмотри на ключи компилятора, бывает чтобы писать на плюсах нужен ключик, например Keil требует ключ c++
проверь пути к заголовочным файлам
наконец просто поиском поищи файл iostream

Добавлено через 1 минуту
Цитата Сообщение от Tester64 Посмотреть сообщение
По тому что находил, std::string дает не больше 30% команд которые мне нужны
создаешь свой класс наследник string и добавляешь что нужно
зачем с нуля писать?
Tulosba
:)
Эксперт С++
4390 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
09.06.2014, 15:11     Строки в с++ типа явовских #8
Цитата Сообщение от Tester64 Посмотреть сообщение
std::string дает не больше 30% команд которые мне нужны
Была тут тема на этот счет. Полистайте.
Цитата Сообщение от ValeryS Посмотреть сообщение
создаешь свой класс наследник string
На публичное наследование std::string не заточен.
Tester64
395 / 356 / 43
Регистрация: 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
Вроде есть... и даже в чужих исходниках что-то подобное нашел! Осталось понять как использовать и почему у меня не нашло, а у других находит...
Renji
1792 / 1210 / 281
Регистрация: 05.06.2014
Сообщений: 3,474
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){...}
Вот и вся наука.
EVP
320 / 242 / 43
Регистрация: 14.12.2010
Сообщений: 462
09.06.2014, 17:50     Строки в с++ типа явовских #11
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от 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: Книжку хотя бы пролистай
Tester64
395 / 356 / 43
Регистрация: 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 обычно есть ответ.
Электронны
yura91
29 / 27 / 2
Регистрация: 23.10.2013
Сообщений: 2,235
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??
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2015, 15:24     Строки в с++ типа явовских
Еще ссылки по теме:

C++ Посимвольное чтение строки типа string
C++ Преобразование части строки типа char в число
C++ Как сравнить две строки типа string?
Возврат объекта шаблонного типа от типа Type из специализации шаблона метода от того же типа C++
Шифрование строки типа string методом xtea C++

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

Или воспользуйтесь поиском по форуму:
EVP
320 / 242 / 43
Регистрация: 14.12.2010
Сообщений: 462
19.09.2015, 15:24     Строки в с++ типа явовских #14
Цитата Сообщение от yura91 Посмотреть сообщение
Прописал.
Уверен, что в нужное место?
Цитата Сообщение от yura91 Посмотреть сообщение
Но заголовки STL по прежнему не видны.
Как ты это определил? Какие заголовки?
NDK иногда делает некоторые нехорошие вещи со стандартной библиотекой.
Цитата Сообщение от yura91 Посмотреть сообщение
Как быть ??
Для начала покажи Android.mk.
Цитата Сообщение от yura91 Посмотреть сообщение
Как все же подключить STL в Android Studio 1.3.2??
Также как и в Эклипсе.
Развёрнуто можно почитать в книжке которую ранее указывал..
Yandex
Объявления
19.09.2015, 15:24     Строки в с++ типа явовских
Ответ Создать тему
Опции темы

Текущее время: 23:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru