我想獲得一個可以是整數或字符串的輸入,並希望將它傳遞給重載函數,以便可以自動檢測並輸出生成的候選函數。有沒有辦法做到這一點?我可以在沒有聲明變量類型的情況下獲得輸入,或者可以在C++中爲同一變量聲明多個類型?
1
A
回答
3
0
如果你可以使用boost,我可以想像,你想要做什麼最接近的就是用一個boost::variant<int,std::string>
和this other question重載>>
流運算符,等等。
0
您可以使用Boost's lexical_cast,或者不那麼複雜(這取決於你的需要),性病::與strtol()或字符串流:
#include <cstdlib>
#include <iostream>
#include <sstream>
void Process(const long num) { std::cout << "int: " << num << "\n"; }
void Process(const std::string& str) { std::cout << "str: " << str << "\n"; }
int main()
{
std::string s;
while(std::cin >> s)
{
char* end;
const auto i = std::strtol(s.c_str(), &end, 10);
if(end == s.c_str() + s.length())
Process(i);
else
Process(s);
std::istringstream iss(s);
int j;
if(iss >> j)
Process(j);
else
Process(s);
}
}
隨着輸入 「ABC 123」,我得到的輸出:
str: abc
str: abc
int: 123
int: 123
+0
謝謝你,這真的很有幫助。 – jason
相關問題
- 1. 我可以在Java中更改變量的聲明類型嗎?
- 2. 我們可以在內核中聲明一個類型爲cufftComplex的變量嗎?
- 3. SQL我可以聲明基於另一個變量的變量數據類型
- 4. 你可以聲明一個可變長度的泛型類型聲明嗎?
- 5. 可以在輸出變量後聲明一個變量嗎? PHP
- 6. 爲什麼可以在TypeScript中聲明一個'anyTextString'類型的變量?
- 7. 我可以在Java的泛型聲明中使用變量嗎?
- 8. C++模板變量類型聲明
- 9. 聲明泛型變量類型
- 10. 我們可以在類聲明中聲明類的類型指針嗎?
- 11. 聲明多個具有相同類型的TypeScript變量
- 12. 變量聲明++型
- 13. 聲明一個變量與++ ++不同類型的用C
- 14. 在C程序中可以做多少個變量聲明?
- 15. 我們可以使用變量類名來聲明objective-c中的變量嗎?
- 16. 我可以在SASS mixin中聲明一個新的變量嗎?
- 17. 在int類型的SSIS中聲明包變量? (可空int)
- 18. scanf()可以用來在C中聲明一個變量嗎?
- 19. 可以在C中聲明一個靜態變量extern:
- 20. 你可以在Go中一次聲明多個變量嗎?
- 21. 聲明類變量C++
- 22. 什麼類型可以聲明爲const?
- 23. 如何在Go中聲明循環變量的變量類型?
- 24. 我可以將一個數字聲明爲一個變量JavaScript
- 25. 爲什麼我在一個聲明中獲得多種類型?
- 26. 聲明變量類型的好處
- 27. 聲明變量是某種類型的
- 28. 如何聲明System.Collections.Generic.IEnumerable類型的變量?
- 29. 我可以在LINQ中聲明/使用一些變量嗎?或者我可以寫下面的LINQ清除器?
- 30. 我可以同時在VBA中聲明和分配變量嗎?
您可以使用模板。 – gartenriese
@gartenriese模板在這裏沒有幫助。他想要根據用戶是否輸入數字來遵循不同的代碼路徑。 – TypeIA
您嘗試過並且失敗的代碼示例,以及有關您希望發生的註釋的相關示例會很有幫助。如你所寫,你要求編譯時按候選值進行選擇,而不是按類型扣除(或如此出現)。對此,我會回答不。如果這不是您想要做什麼的準確描述,則需要發佈更多信息。 – WhozCraig