如何将字符串转换为模板类型

时间:2013-10-23 15:24:06

标签: c++

我正在用c ++编写程序,今天我面临以下问题,我想知道是否有人可以帮助或解释如何解决它。 基本上我处理模板类,其中一个方法应该从用户输入一个字符串值,将其转换为模板值并返回。 代码如下所示:

T HashTable<T>::insertValue()
{
    T value;
    string str;

    cout << "Insert value please" << endl;
    getline(cin,str);
    stringstream convert(str);
    convert >> value;

    return value;
} 

它完全正常,直到我输入字符串 - 如果我输入整个句子 - 转换后第一个空格丢失后的部分。 有没有办法避免这种情况?

1 个答案:

答案 0 :(得分:4)

这样的东西?

template<typename T>
T getline_as( std::istream& s );

template<>
std::string getline_as<std::string>( std::istream& s )
{
    std::string str;
    std::getline(s,str);
    return str;
} 

template<typename T>
T getline_as( std::istream& s )
{
    std::stringstream convert(getline_as<std::string>(s));

    T value;
    convert >> value;
    return value;
}

T HashTable<T>::insertValue()
{
    cout << "Insert value please" << endl;
    return getline_as<T>(cin);
}