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

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

Войти
Регистрация
Восстановить пароль
 
MrKarapuz
0 / 0 / 0
Регистрация: 09.11.2009
Сообщений: 3
#1

шаблонные строковые функции - C++

09.11.2009, 10:56. Просмотров 593. Ответов 0
Метки нет (Все метки)

решил написать несколько строковых функций, так чтоб работали со строками разных типов
вот одна из них
делает поиск символа в строке, возвращает индекс или -1 если не найден

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template<class TYPE>
inline SIZE_T   str_find_symn(const TYPE* pSrc,TYPE& Symbol,SIZE_T Count){
    SIZE_T  Index;
    switch(sizeof TYPE){
        case 1:
            __asm__("repne; scasb; cmovnel %2,%%ecx":"=c"(Index),"=D"(pSrc):"rm"(Count),"D"(pSrc),"c"(Count),"a"(Symbol));
        case 2:
            __asm__("repne; scasw; cmovnel %2,%%ecx":"=c"(Index),"=D"(pSrc):"rm"(Count),"D"(pSrc),"c"(Count),"a"(Symbol));
        case 4:
            __asm__("repne; scasl; cmovnel %2,%%ecx":"=c"(Index),"=D"(pSrc):"rm"(Count),"D"(pSrc),"c"(Count),"a"(Symbol));
        default:
            return 0;
    }
    return Count-Index-1;
}
проблема состоит в том что при вызове например так
C++
1
str_find_symn("asdasd",123,6);
не компилит и выводит следущую ошибку
error: no instance of function template "str_find_symn_" matches the argument list
1> argument types are: (const char [7], int, int)
1> str_find_symn("asdasd",123,6);

то есть как я понял компилятор не преобразовывает 123 к типу char
если написать так
C++
1
str_find_symn("asdasd",(char)123,6);
то все нормально

теперь вопросы
1. как сделать так чтоб при каждом вызове мне не приходилось преобразовывать типы
2. как проверку на размер типа сделать через условную компиляцию. (при оптимизации он конечно обрубает лишние case, но хотелось бы чтоб на стадии отладки их тоже не было)

компидятор Intel 10
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2009, 10:56     шаблонные строковые функции
Посмотрите здесь:

C++ Шаблонные функции
Шаблонные функции C++
C++ Шаблонные функции
C++ Шаблонные функции
C++ шаблонные виртуальные функции
Шаблонные функции C++
C++ Шаблонные функции
Шаблонные функции C++
C++ шаблонные функции
Шаблонные функции C++
Шаблонные функции в C++ C++
C++ Шаблонные функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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