Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

09.11.2009, 10:56. Просмотров 610. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2009, 10:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос шаблонные строковые функции (C++):

Шаблонные функции - C++
Помогите, пожалуйста, реализовать шаблонную функцию определения, есть ли число в массиве

Шаблонные функции - C++
Доброго времени суток. Есть шаблонная функция(двоичный сумматор прямого кода): template &lt;class T&gt; void Main_register::badc(T *regist, T...

Шаблонные функции - C++
Чет не получается написать шаблонную функцию. func.h template &lt;class T&gt; T strnstr (T str, T substr, unsigned int count) { ...

Шаблонные функции - C++
Читал у Праты про шаблонные функции, и везде они описаны наподобие template &lt;typename Any&gt; void Swap (Any &amp;a, Any &amp;b) А если нужно...

Шаблонные функции - C++
Любимой нужно, это свято... Поэтому прошу помощи... Перегрузить операторы &gt;, &lt;, == для класса Книга относительно сравнения года...

Шаблонные функции - C++
С помощью http://ru.wikipedia.org/wiki/Шаблоны_C%2B%2B пытался написать программу с шаблонной функцией по примеру использования который там...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2009, 10:56
Привет! Вот еще темы с ответами:

Шаблонные функции - C++
1) Написать шаблонную функцию для нахождения минимального из трех передаваемых чисел (для чисел типа int, double, char). В функции...

Шаблонные функции - C++
Такой код работает. #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; using namespace std; template &lt;typename T&gt; T...

шаблонные функции - C++
доброго времени суток уважаемые форумчане, помогите пожалуйста разобраться с шаблонными функциями, читал про них много но так и не понял...

Шаблонные функции в C++ - C++
Каждый раз когда вижу код, который должен быть простым и понятным, я понимаю его немного хуже. Вот наш код: template &lt;typename T,...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru