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

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

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

Множественные char условия в условных операторах - C++

01.08.2013, 14:59. Просмотров 502. Ответов 9
Метки нет (Все метки)

Такой вопрос. Как сделать условия типа:
C
1
2
3
const char *Type;
if (Type == "One" || "ONE" || "one"){}
else if (Type == "Two" || "TWO" || "two"){}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.08.2013, 14:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Множественные char условия в условных операторах (C++):

ошибка в условных операторах - C++
где здесь ошибка? #include <iostream> #include <math.h> using namespace std; int main() {

Подскажите в условных операторах - C++
подскажите пожалуйста Даны три вещественных числа. Вывести на экран: а) те из них, которые принадлежат интервалу (а-b), б)те из них,...

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

Путаница в операторах - C++
Что же возвращает 6-ая строка? BOOL String::Invariants() const { #ifdef SHOW_INVARIANTS cout << "Invariants Tested" << endl; ...

Есть ли ошибка в операторах - C++
Задано опис: FILE f1,f2; float f; long l; char c;Каждый вариант вопроса содержит фрагмент программы, использующей приведенные...

Нужно ли писать 'this' в операторах - C++
Нужно ли писать 'this' в операторах типа this->Edit1->Text = 'qqq' и чем отличается выполнение подобного оператора с 'this' и без него

9
Бендерродригез
Сгибальщик
42 / 42 / 3
Регистрация: 18.05.2013
Сообщений: 220
Завершенные тесты: 1
01.08.2013, 15:05 #2
C++
1
if (Type == "One" || Type == "ONE" || Type == "one"){}
1
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2013, 15:07 #3
Pam, вы в курсе что сравниваете указатели, а не строки?
0
nonedark2008
933 / 672 / 148
Регистрация: 28.07.2012
Сообщений: 1,837
01.08.2013, 15:15 #4
Pam, для сравнения используй strcmp(str1, str2) == 0
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
01.08.2013, 15:16 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cctype>
#include <cassert>
 
// ...
 
bool iequals(char const* lhs, char const* rhs) {
   assert(lhs);
   assert(rhs);
 
   for ( ; lhs && rhs; ++lhs, ++rhs) {
      if (::tolower(*lhs) != ::tolower(*rhs)) {
         return false;
      }
   }
 
   return !(lhs || rhs);
}
 
// ...
 
if (iequals(Type, "one")) { /* ... */ }
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.08.2013, 16:14 #6
gray_fox, есть же stricmp.
0
Jupiter
Каратель
Эксперт С++
6561 / 3982 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
01.08.2013, 16:21 #7
Tulosba, он не входит в стандарт
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.08.2013, 16:50 #8
Jupiter, действительно. Но может быть входит в реализацию используемого ТС компилятора.
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
01.08.2013, 21:00 #9

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
gray_fox, есть же stricmp.
Я его тоже в начале указал, потом вспомнил про strcasecmp, поглядел, и...)



Добавлено через 1 час 5 минут
lol я и код то кривой написал) поправил:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <cctype>
#include <cassert>
 
// ...
 
bool iequals(char const* lhs, char const* rhs) {
   assert(lhs);
   assert(rhs);
 
   for ( ; *lhs && *rhs; ++lhs, ++rhs) {
      if (::tolower(*lhs) != ::tolower(*rhs)) {
         return false;
      }
   }
 
   return !(*lhs || *rhs);
}
 
// ...
 
if (iequals(Type, "one")) { /* ... */ }
0
OhMyGodSoLong
01.08.2013, 21:19     Множественные char условия в условных операторах
  #10

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Jupiter, действительно. Но может быть входит в реализацию используемого ТС компилятора.
Цитата Сообщение от Jupiter Посмотреть сообщение
Tulosba, он не входит в стандарт
А теперь если строки в разных кодировках, или на языке со спеицифичными правилами капитализации (банальный пример: немецкий)? Это так, к вопросу, почему не стоит лепить регистронезависимое сравнение куда ни попадя.

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

Выход на биты в поразрядных операторах - C++
Здравствуйте. Обьясните пожалуйста есть код: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #pragma argsused void...

Найдите ошибки в операторах ввода/вывода - C++
Помогите плз ответить на вопросы: 3. Найдите ошибки в операторах ввода/вывода (ответ пояснить): a) cout &lt;&lt; &quot;\n x%1&quot;; b) ...

Какие ограничения накладываются на объявления в операторах - C++
Вопрос: какие ограничения накладываются на объявления в операторах?

О классах и конструкторах и об операторах case c {} и без. Нюансы - C++
Зачем в С++ имеется возможность определять методы вне тела класса через разделитель ::? class green { private: int...


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

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

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