簡體   English   中英

如何將字符串轉換為模板類型

[英]How to convert string to template type

我正在用 C++ 編寫程序,今天我遇到了以下問題,我想知道是否有人可以幫助或解釋如何解決它。 基本上我已經處理了模板類,其中一種方法應該將用戶的輸入作為字符串值,將其轉換為模板值並返回。 下面是代碼的樣子:

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

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

    return value;
} 

它工作得很好,直到我輸入字符串 - 如果我輸入整個句子 - 轉換后第一個空格后的部分丟失。 有什么辦法可以避免這種情況嗎?

像這樣的東西?

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM