Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2009, 14:54   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию проверка без регистра

Здравствуйте... имеются переменные типа стринг... и сравниваются между собой... if (string1 == string2)
данные в переменных могут совпадать... но, текст в них разного регистра... собственно и вопрос, как осуществить проверку без регистра?
Артэс вне форума Ответить с цитированием
Старый 24.11.2009, 15:08   #2
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

подсказка - привести обе строки к одному регистру, например к нижнему и сравнить
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 24.11.2009, 15:16   #3
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Ну конечно же, если бы я знал как это оформляется в коде, я бы не стал наверное задавать вопрос тут
Артэс вне форума Ответить с цитированием
Старый 24.11.2009, 15:40   #4
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

ну я вот тоже не знал, как это делать на плюсах, применительно к плюсовским строкам, но все таки сделал за тебя ТВОЮ работу поиска инфы в гугле.

Код:
#include <iostream>
#include <algorithm>
#include <cctype>
#include <string>

using namespace std;

int main() {
	string str = "tExT";
	transform(str.begin(), str.end(), str.begin(), _tolower);
	cout << str << endl;
	return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 24.11.2009, 15:59   #5
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

есть функция такая:
Код:
strcmpi
но только фиг знает, подойдет она или нет, почитай про нее
Olejik вне форума Ответить с цитированием
Старый 24.11.2009, 16:39   #6
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

В первом случае работает, но за место данных, какие то каракули в переменной

пробовал if(strcmpi(string1,string2)) == 0
ругается
cannot convert `std::string' to `const char*' for argument `1' to `int strcmpi(const char*, const char*)'
Артэс вне форума Ответить с цитированием
Старый 24.11.2009, 16:46   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
if (strcmpi(string1.c_str(),string2.c_str())) == 0
у меня в первом все нормально, ибо линух (нормально настроенная локаль)
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 24.11.2009, 17:32   #8
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

отличненько! все работет (второй вариант) Спасибо! Но чем отличаются эти функции, и в какую сторону предпочтение?

Последний раз редактировалось Артэс; 24.11.2009 в 17:38.
Артэс вне форума Ответить с цитированием
Старый 24.11.2009, 18:54   #9
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

для строк нужно использовать функцию lstrcmp

http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 24.11.2009, 19:23   #10
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

lstrcmp(string, string2) == 1
не годится
cannot convert `std::string' to `const CHAR*' for argument `1' to `int lstrcmpA(const CHAR*, const CHAR*)'
Артэс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск без учета регистра Cartman18 БД в Delphi 2 15.10.2009 15:18
Lookup без учета регистра ИВАНьКа Общие вопросы C/C++ 1 30.08.2009 12:48
Locate без учета регистра символов _SERGEYX_ БД в Delphi 2 09.08.2007 09:52
Проверка текста без учета регистра John_chek Общие вопросы Delphi 8 08.06.2007 08:50
Поиск без учёта регистра Маркъ Общие вопросы Delphi 4 15.03.2007 19:28