Я конвертирую свои функции чтения классов полей в одну шаблонную функцию. У меня есть полевые классы для int, unsigned int, long,
и unsigned long
. Все они используют один и тот же метод для извлечения значения из istringstream
(изменяются только типы):
template <typename Value_Type>
Value_Type Extract_Value(const std::string& input_string)
{
std::istringstream m_string_stream;
m_string_stream.str(input_string);
m_string_stream.clear();
m_string_stream >> value;
return;
}
Сложная часть с типом bool
(Boolean). Есть много текстовых представлений для логического:
0, 1, T, F, TRUE, FALSE
, и все регистро-независимые комбинации
Вот вопросы:
- Что говорит стандарт C ++:
действительные данные для извлечения
bool
,
используя извлечение потока
оператор?
- Поскольку логическое значение может быть представлено как
текст, это включает
locale
с?
- Зависит ли эта платформа?
Я бы хотел упростить мой код, не написав свой собственный обработчик для ввода bool
.
Я использую MS Visual Studio 2008 (версия 9), C ++, Windows XP и Vista.