0

编写代码我遇到了以下困难:我有模板类,我在其中初始化模板类型数组。然后在主要方法中,我创建类的不同泛型对象,并根据用户的选择使用其中之一。之后用户可以添加要存储在数组中的值。但是,如果我创建类“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;


}

并为一个字符插入“2b”-它只需要第一个字符,然后将其返回以存储在数组中。我想要做的是检查输入的字符串和转换后的值是否包含相同数量的字符,如果没有则抛出异常。你有什么建议吗?谢谢

4

1 回答 1

0

使用模板专业化并为char. 在这个版本throw中给出了一个例外条件if(str.size() > 1)

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

if(convert >> value) {
    T dummy;
    if(convert >> dummy) throw type_e;
    return value;
}
于 2013-10-25T14:55:32.353 回答