将sstream的输出与初始值进行比较

时间:2013-10-25 14:05:07

标签: c++

编写我遇到困难的代码: 我有模板类,我初始化模板类型数组。 然后在main方法中,我创建类的不同泛型对象,并根据用户选择使用其中一个。 之后用户可以添加要存储在数组中的值。 但是如果我创建类“HashTable charTable”的char实例; 然后按照以下方法

  template <class T>
T HashTable<T>::insertValue()
{

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

    if(convert >> value){

    return value;

    }throw type_e;


}

并为char添加“2b”-it只接受第一个char而不是将其返回到存储在数组中。 我想要做的是检查输入的字符串和转换后的字符串是否具有相同的字符数量,如果没有则抛出异常。 你有任何建议吗? 感谢名单

1 个答案:

答案 0 :(得分:0)

使用模板专精化并为char创建一个版本。在此版本throw中,条件为if(str.size() > 1)

另一种方法是在您提取值并且您希望使用该值读取所有数据之后,如果此条件再次为真,则抛出异常。

if(convert >> value) {
    T dummy;
    if(convert >> dummy) throw type_e;
    return value;
}