Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос к программистам на c++

Егор панов Ученик (113), закрыт 2 недели назад
Как в c++ можно сделать проверку переменной "string" в конструкции switch case? Просто надо делать очень много проверок строки, и пирамиду из ифов я не хочу делать.
Лучший ответ
Николай Веселуха Высший разум (368760) 2 недели назад
Пример под Windows с поддержкой русского языка
 // Метки case типа const char* 
#include <iostream>
#include <string>
using namespace std;
// Обсуждение проблемы
// https://stackoverflow.com/questions/2111667/compile-time-string-hashing
// Решение проблемы
// https://github.com/manuelgustavo/cx_hash/blob/master/cx_hash/cx_hash.cpp
constexpr size_t cx_hash(const char* input) {
size_t hash = sizeof(size_t) == 8 ? 0xcbf29ce484222325 : 0x811c9dc5;
const size_t prime = sizeof(size_t) == 8 ? 0x00000100000001b3 : 0x01000193;
while (*input) {
hash ^= static_cast<size_t>(*input);
hash *= prime;
++input;
}
return hash;
}
int main() {
system("chcp 1251 > nul");
const size_t four = 4;
while (true) {
cout << "word: ";
string word;
cin >> word;
switch (cx_hash(word.c_str())) {
case cx_hash("one"): puts("1"); break;
case cx_hash("two"): puts("2"); break;
case cx_hash("three"): puts("3"); break;
case cx_hash("четыре"): puts("4"); break;
default: puts("other");
}
}
system("pause > nul");
}
Остальные ответы
EMINEM Мудрец (12640) 2 недели назад
Можешь сразу забить на кодинг, раз у тебя нет ни творческого мышления, ни логического. Просто забей, до Джона Кармака тебе далеко.
Александр Александр Ученик (148) 2 недели назад
Платят люди за курсы сами не понимая чего они хотят
Сергей Гений (59738) 2 недели назад
Через unordered_map <string,int>
 unordered_map <string, int> mapa;
mapa["hello"] = 3;
mapa["like"] = 1;
...
string str;
cin >> str;
switch(mapa.contain(str)?mapa[str]:0)
{
case 3: cout "Вы ввели hello"; break;
case 1: cout "Вы ввели лайк"; break;
...
}
Похожие вопросы