[英]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.