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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Массив и матрица http://www.cyberforum.ru/cpp-beginners/thread62290.html
Вот такие задачи: 1) В одномерном массиве, состоящем из n целых элементов опеределить: - сумму четных элементов массива - произведение неччетных элементов массива 2) Заполнить матрицу случайными числами. Развернуь матрицу на 90 градусов протич часовой стрелки. Буду благодарен за помощь.
C++ Побитовая операция & Скажите пожалуста, что значит эта запись , и как записать в другом варианте? ... int x=5; while (x & 1) {.... http://www.cyberforum.ru/cpp-beginners/thread62286.html
Найти темный и светлый цвет RGB C++
есть RGB цвет...надо найти ее темный и светлый цвет.. ULONG CCWINDOW::Analizer(COLORREF color,UINT kind) { //0 Svetliy UCHAR R,G,B; R = GetRValue(color);
составить таблицу! C++
составить таблицу значений функции (интеграла) для 1<=X<=2 c шагом h=0.1 кому не сложно помогите написать это программку!! буду очень благодарен!! программа для С.
C++ Задачка про двумерные массивы http://www.cyberforum.ru/cpp-beginners/thread62272.html
Задача о замочной скважине, подойдет ли ключ к замку. Даны мозаичные изображения замочной скважины и ключ. Нужно узнать, пройдёт ли ключ в скважину? То есть даны матрицы L(m1,n1) и K(m2,n2), m1>m2, n1>n2, состоящие из нулей и единиц. Проверить подойдет ли "ключ" к "замку". Каждой единице матрицы L соответствовал нуль матрицы K, и если можно, то как (на сколько и в каком направлении следует...
C++ Вставить после каждого знака пунктуации в символьном массиве знак табуляции Помогите пожалуйста решить задачи на языке Си 1. Вставить после каждого знака пунктуации в символьном массиве знак табуляции. 2. Дан целочисленный массив, определить серии максимальной и минимальной длины и поменять их местами, если их несколько, то первые из них. подробнее

Показать сообщение отдельно
MrKarapuz
0 / 0 / 0
Регистрация: 09.11.2009
Сообщений: 3

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

09.11.2009, 10:56. Просмотров 595. Ответов 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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru