如果我有一个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