7

我正在用 C++ 编写程序,今天我遇到了以下问题,我想知道是否有人可以帮助或解释如何解决它。基本上我已经处理了模板类,其中一种方法应该将用户的输入作为字符串值,将其转换为模板值并返回。这是代码的样子:

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

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

    return value;
} 

它工作得很好,直到我输入字符串 - 如果我输入整个句子 - 在转换后第一个空格后的部分丢失。有什么办法可以避免吗?

4

1 回答 1

7

像这样的东西?

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);
}
于 2013-10-23T15:51:15.230 回答