Покажите примерчик для системы поиска.
т.е у меня есть строка с начальным символом A, B или C
и мне нужно в зависимости от первого символа выбрать в структуре слова начитающиеся на эту букву на С, не на С++.
Apple
Acer
Beer
Beep
Clean
Clear
Call
Только так, что-бы если я ввожу не один символ, а например два Ap, то вывелось только Apple
На С++ можно вот так, а как на С?
И еще подскажите с вот такой регуляркой \x — это что такое?
typedef std::list<std::string> StringList;
typedef smart_ptr<StringList> StringListPtr;
typedef std::map<char, StringListPtr> StringTable;
typedef std::pair<char, StringListPtr> StringTablePair;
void Init(StringTable & Table)
{
StringListPtr H_List = new StringList;
H_List.push_back("hi");
H_List.push_back("hello");
H_List.push_back("hacker");
StringListPtr W_List = new StringList;
W_List.push_back("world");
W_List.push_back("word");
StringListPtr C_List = new StringList;
C_List.push_back("c++");
Table.insert(StringTablePair('h', H_List));
Table.insert(StringTablePair('w', W_List));
Table.insert(StringTablePair('c', C_List));
}
bool IsMatch(const std::string & sStr, StringList & List)
{
for (StringList::iterator it = List.begin(), end = List.end(); it != end; ++it)
if (sStr == *it)
return true;
return false;
}
bool IsMatch(const std::string & sStr, StringTable & Table)
{
if (sStr.size() == 0)
return false;
StringTable::iterator it = Table.find(sStr[0]);
if (it == Table.end())
return false;
return IsMatch(sStr, *(*it));
}