我有類似「yx-name」的字符串,其中y和x的數字範圍是從0到100.從這個字符串中,將'x'提取到整數變量中的最佳方法是什麼。C++從字符串中提取整數
0
A
回答
1
您可以將字符串拆分爲.
,並將其直接轉換爲整數類型。在while循環的第二個數字是你想要的,見示例代碼:
template<typename T>
T stringToDecimal(const string& s)
{
T t = T();
std::stringstream ss(s);
ss >> t;
return t;
}
int func()
{
string s("100.3-name");
std::vector<int> v;
std::stringstream ss(s);
string line;
while(std::getline(ss, line, '.'))
{
v.push_back(stringToDecimal<int>(line));
}
std::cout << v.back() << std::endl;
}
這將輸出:3
0
這似乎是這個線程有類似於你一個問題,它可能會幫助;)
0
使用兩次調用unsigned long strtoul(const char *str, char **str_end, int base)
,如:
#include <cstdlib>
#include <iostream>
using namespace std;
int main(){
char const * s = "1.99-name";
char *endp;
unsigned long l1 = strtoul(s,&endp,10);
if (endp == s || *endp != '.') {
cerr << "Bad parse" << endl;
return EXIT_FAILURE;
}
s = endp + 1;
unsigned long l2 = strtoul(s,&endp,10);
if (endp == s || *endp != '-') {
cerr << "Bad parse" << endl;
return EXIT_FAILURE;
}
cout << "num 1 = " << l1 << "; num 2 = " << l2 << endl;
return EXIT_FAILURE;
}
0
你可以用boost::lexical_cast實現它,它利用溪流像billz」回答: 僞代碼是這樣的(指數可能是錯在那個例子):
std::string yxString = "56.74-name";
size_t xStart = yxString.find(".") + 1;
size_t xLength = yxString.find("-") - xStart;
int x = boost::lexical_cast<int>(yxString + xStart, xLength);
解析錯誤可以通過由lexical_cast的拋出的異常處理。 爲了更靈活/強大的文本匹配,我建議boost::regex。
相關問題
- 1. 從字符串中提取整數
- 2. 從字符串中提取整數值
- 3. 從JSON字符串中提取整數?
- 4. 從字符串中提取整數
- 5. 從字符串中提取整數並轉換爲整數?
- 6. 從一個字符串中提取整數 - 包括負整數
- 7. 從字符串中提取數字(如整數或雙精度)
- 8. 從字符串中提取字符串
- 9. 提取小數或整數字符串
- 10. 從字符串中提取數字
- 11. iMacros:從字符串中提取數字
- 12. 從字符串中提取數字
- 13. 從字符串中提取數字
- 14. 從字符串中提取數字? Java
- 15. R - 從字符串中提取數字
- 16. 從字符串中提取數字
- 17. R:從字符串中提取數字
- 18. 從字符串中提取數字
- 19. Rapidminer從字符串中提取數字
- 20. 從字符串中提取數字
- 21. 從字符串中提取數字javascript
- 22. 從字符串中提取數字
- 23. Oracle:從字符串中提取數字
- 24. 從html字符串中提取數字
- 25. 從C字符串中提取「整數」和「小數」?
- 26. 從字符串中提取
- 27. 從字符串中提取
- 28. 從字符串中讀取整數
- 29. 從目標c中的字符串中提取整數
- 30. 從Fortran中的字符串中提取整數
@ billz:你能解釋一下ss >> t嗎? –
'ss >> t'將字符串(可以是'100'或'3-name')轉換爲t,它只寫整數類型並截斷不相關的字符串。就像atoi函數一樣。請參閱http://en.cppreference.com/w/cpp/io/basic_istream/operator_gtgt – billz