Здесь представлена функция разделения:
template<typename T>
vector<T>
split(const T & str, const T & delimiters) {
vector<T> v;
typename T::size_type start = 0;
auto pos = str.find_first_of(delimiters, start);
while(pos != T::npos) {
if(pos != start) // ignore empty tokens
v.emplace_back(str, start, pos - start);
start = pos + 1;
pos = str.find_first_of(delimiters, start);
}
if(start < str.length()) // ignore trailing delimiter
v.emplace_back(str, start, str.length() - start); // add what's left of the string
return v;
}
Пример использования:
vector<string> v = split<string>("Hello, there; World", ";,");
vector<wstring> v = split<wstring>(L"Hello, there; World", L";,");
Классы не уникальны (вы можете иметь несколько элементов с одним и тем же классом), поэтому нет.
Если вы хотите связать метку с входом без использования идентификатора, вы можете неявно назначить его, включив указанный вход внутри метки:
<label>Number of rooms
<select name="rooms">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
</label>
Нет, вы не можете использовать class
элемента, потому что один и тот же класс может использоваться несколькими элементами - в этом случае, какой элемент будет для label
для?
Вот пример того, когда вы не захотите использовать идентификатор или вложить элемент управления:
<label>
. На этом этапе единственным решением, которое я могу найти, является обертка элемента управления и tweek CSS по умолчанию, чтобы получить желаемый результат. Если у кого-то есть более элегантное решение, пожалуйста, войдите в систему.
Нет, вы не можете. Единственным атрибутом, который вы можете использовать, является атрибут id
.
Не имеет смысла использовать класс (который описывает группу связанных элементов), поскольку метка может связаны только с одним контролем формы.