如果我有一個int說306.什麼是最好的方法來分開數字3 0 6,所以我可以單獨使用它們?我正在考慮將int轉換爲一個字符串然後解析它?整數和字符串解析
int num;
stringstream new_num;
new_num << num;
我不知道該怎麼做,但解析字符串。建議?
如果我有一個int說306.什麼是最好的方法來分開數字3 0 6,所以我可以單獨使用它們?我正在考慮將int轉換爲一個字符串然後解析它?整數和字符串解析
int num;
stringstream new_num;
new_num << num;
我不知道該怎麼做,但解析字符串。建議?
不使用字符串,您可以向後工作。爲了得到6,
306 % 10
這將向後打印每一個數字:
while (num > 0) {
cout << (num % 10) << endl;
num /= 10;
}
只需一次遍歷流中的一個元素並將其提取出來。
char ch;
while(new_num.get(ch)) {
std::cout << ch;
}
查爾斯的方式是非常直接的。然而,這並非罕見的數字轉換爲字符串,並做一些字符串處理,如果我們不想與數學:)
這裏奮鬥的過程,我們想做的事:
306 -> "306" -> ['3' ,'0', '6'] -> [3,0,6]
一些語言是很容易做到這一點(紅寶石):
>> 306.to_s.split("").map {|c| c.to_i}
=> [3,0,6]
有些需要更多的工作,但還是很清楚的(C++):
#include <sstream>
#include <iostream>
#include <algorithm>
#include <vector>
int to_digital(int c)
{
return c - '0';
}
void test_string_stream()
{
int a = 306;
stringstream ss;
ss << a;
string s = ss.str();
vector<int> digitals(s.size());
transform(s.begin(),s.end(),digitals.begin(),to_digital);
}
請注意,您的'to_digital()'不適用於所有編碼。 – sbi 2009-09-11 08:32:26
迴路串並收集像
int val = new_num[i]-'0';
值。例如,如果你的字符串是toto。 toto [0]將是3,toto [1] 0 ... – anno 2009-09-11 04:07:46
索引或索引? – anno 2009-09-11 04:11:01
查爾斯王子會寫「索引」。 – 2009-09-11 06:33:51