от
У меня есть эта функция шаблона, которая получает элемент из
std::map
в виде строки, преобразует его в общий
T
через
std::stringstream operator>>
и возвращает его. Однако оператор извлечения извлекает только первое слово в потоке. Я пробовал
.str()
, но для функции шаблона это не сработает. Я также пытался
ss >> std::noskipws >> result;
, но он не возвращает действительные данные.
template
T CConfig::get(const char *setting)
{
    std::stringstream ss;
    ss << this

Я ожидаю, что если m_settings [setting] равен <pre>"this is a test"
, эта же строка будет возвращена в моей функции
get
. И в то же время я не хочу ломать шаблон, жестко кодируя
ss.str()
и используя другую функцию для строк.              

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

2 Ответы

0 голосов
от
Вот 3 способа: Как я уже сказал в своем комментарии, вы можете специализировать функцию
get
0 голосов
от
Вы должны точно решить, что вы хотите, чтобы поведение было для строк. Если вы хотите извлечь целую строку, вы можете использовать
std::getline()
. Или в этом случае, возможно, просто
return this.

Что бы вы в итоге ни делали, решение состоит в том, чтобы превратить вариант поведения в специализацию для get
...