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

Метод compare string - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.96
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 13:29     Метод compare string #1
Всем привет! Не могу понять в чем у меня ошибка! Применяю метод compare из string, но компилятор выдает ошибку, что мало параметров в функции.
C++
1
2
3
wchar_t name [30];
wstring nameclient;
int comparename = nameclient.compare (  name );
Погуглил нашел,что

C++
1
int compare ( const char* s ) const;
Заранее благодарен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пaтрик
 Аватар для Пaтрик
394 / 387 / 38
Регистрация: 21.01.2012
Сообщений: 972
Завершенные тесты: 1
29.08.2012, 13:40     Метод compare string #2
Всё нормально.!
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 13:50  [ТС]     Метод compare string #3
Не могу подгрузить фото, у меня все равно ошибка
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 14:43     Метод compare string #4
Holsteng, Компилятор/использование?
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 14:49  [ТС]     Метод compare string #5
VS 2010

C++
1
int comparename = nameclient.compare ( iteratorclient -> nameclient );
Применяю этот код в цикле, nameclient хранит считанная с Edit строка, а итератором шагаю по list, где хранятся структуры

C++
1
2
3
4
5
6
7
8
9
10
struct Client
    {
    public:
        
        wchar_t nameclient[30];//name client
        wchar_t lastnameclient[30];//lastname client
        wchar_t patronymicclient[30];//patronymic client
        wchar_t addressclient[50];// name street client
        
    };
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 14:51     Метод compare string #6
Я надеюсь nameclient это wstring? Если да - дожно работать.
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 14:57  [ТС]     Метод compare string #7
ForEveR, nameclient это wstring, посмотрите фото в архиве.
Вложения
Тип файла: 7z ff.7z (19.0 Кб, 7 просмотров)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 14:59     Метод compare string #8
Holsteng, Говорит мало аргументов. Смотрите в VS хедерах, что требуется для compare еще.
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 15:03  [ТС]     Метод compare string #9
Цитата Сообщение от ForEveR Посмотреть сообщение
Смотрите в VS хедерах,
это где?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 15:04     Метод compare string #10
Holsteng, Эм... Откройте файл string и ищите там метод compare. Полазейте по хедер-файлам. Хотя странно, что такая ошибка.
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 15:13  [ТС]     Метод compare string #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
    int compare(const _Myt& _Right) const
        {   // compare [0, _Mysize) with _Right
        return (compare(0, this->_Mysize, _Right._Myptr(), _Right.size()));
        }
 
    int compare(size_type _Off, size_type _N0,
        const _Myt& _Right) const
        {   // compare [_Off, _Off + _N0) with _Right
        return (compare(_Off, _N0, _Right, 0, npos));
        }
 
    int compare(size_type _Off,
        size_type _N0, const _Myt& _Right,
        size_type _Roff, size_type _Count) const
        {   // compare [_Off, _Off + _N0) with _Right [_Roff, _Roff + _Count)
        if (_Right.size() < _Roff)
            _Xran();    // _Off off end
        if (_Right._Mysize - _Roff < _Count)
            _Count = _Right._Mysize - _Roff;    // trim _Count to size
        return (compare(_Off, _N0, _Right._Myptr() + _Roff, _Count));
        }
 
    int compare(const _Elem *_Ptr) const
        {   // compare [0, _Mysize) with [_Ptr, <null>)
        _DEBUG_POINTER(_Ptr);
        return (compare(0, this->_Mysize, _Ptr, _Traits::length(_Ptr)));
        }
 
    int compare(size_type _Off, size_type _N0, const _Elem *_Ptr) const
        {   // compare [_Off, _Off + _N0) with [_Ptr, <null>)
        _DEBUG_POINTER(_Ptr);
        return (compare(_Off, _N0, _Ptr, _Traits::length(_Ptr)));
        }
Все что нашел, но не вижу той перегрузки
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 15:14     Метод compare string #12
Holsteng, Вот она вообщем-то

C++
1
2
3
4
5
int compare(const _Elem *_Ptr) const
        {   // compare [0, _Mysize) with [_Ptr, <null>)
        _DEBUG_POINTER(_Ptr);
        return (compare(0, this->_Mysize, _Ptr, _Traits::length(_Ptr)));
        }
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 15:16  [ТС]     Метод compare string #13
C++
1
const _Elem *_Ptr
а это как разуметь?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 15:21     Метод compare string #14
Holsteng, Посмотреть на typedef-ы в классе.
Andsteadur
152 / 136 / 3
Регистрация: 23.05.2009
Сообщений: 275
29.08.2012, 15:22     Метод compare string #15
Здесь _Elem это wchar_t, т.к. wstring это:
C++
1
2
typedef basic_string<wchar_t, char_traits<wchar_t>,
    allocator<wchar_t> > wstring;
Получается для wstring
C++
1
const _Elem *_Ptr == const wchar_t *_Ptr
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
29.08.2012, 15:29  [ТС]     Метод compare string #16
Ладно, ребята, забейте. Буду использовать lstrcmpi. Спасибо
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
29.08.2012, 20:42     Метод compare string #17
operator==() внутри себя использует compare(), можно же просто его использовать.

Добавлено через 5 минут
gcc 4.6.3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// operator ==
  /**
   *  @brief  Test equivalence of two strings.
   *  @param lhs  First string.
   *  @param rhs  Second string.
   *  @return  True if @a lhs.compare(@a rhs) == 0.  False otherwise.
   */
  template<typename _CharT, typename _Traits, typename _Alloc>
    inline bool
    operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
           const basic_string<_CharT, _Traits, _Alloc>& __rhs)
    { return __lhs.compare(__rhs) == 0; }
 
  template<typename _CharT>
    inline
    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, bool>::__type
    operator==(const basic_string<_CharT>& __lhs,
           const basic_string<_CharT>& __rhs)
    { return (__lhs.size() == __rhs.size()
          && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
                            __lhs.size())); }
 
  /**
   *  @brief  Test equivalence of C string and string.
   *  @param lhs  C string.
   *  @param rhs  String.
   *  @return  True if @a rhs.compare(@a lhs) == 0.  False otherwise.
   */
  template<typename _CharT, typename _Traits, typename _Alloc>
    inline bool
    operator==(const _CharT* __lhs,
           const basic_string<_CharT, _Traits, _Alloc>& __rhs)
    { return __rhs.compare(__lhs) == 0; }
 
  /**
   *  @brief  Test equivalence of string and C string.
   *  @param lhs  String.
   *  @param rhs  C string.
   *  @return  True if @a lhs.compare(@a rhs) == 0.  False otherwise.
   */
  template<typename _CharT, typename _Traits, typename _Alloc>
    inline bool
    operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs,
           const _CharT* __rhs)
    { return __lhs.compare(__rhs) == 0; }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2012, 20:55     Метод compare string
Еще ссылки по теме:

C++ СЛАУ. Метод обратной матрицы, метод Гаусса, метод Крамера, метод Зейделя
C++ Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()?
Std::string compare C++

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

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
29.08.2012, 20:55     Метод compare string #18
Kastaneda, Лучше в стандарте смотреть, да данное поведение описано в С++11, в С++03 - не знаю.
Yandex
Объявления
29.08.2012, 20:55     Метод compare string
Ответ Создать тему
Опции темы

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