我有一个字符向量它总共包含252个字符。我试图过滤掉将它们放入自己的媒介中的单词,操作符和数字。铸造一个取消引用Char迭代器为int C++
我用迭代器来移动字符的向量。我遇到的问题是将数字(都是整数)放入整数向量中。
我试着将取消引用的迭代器投射到int
,但它仍然存储十进制表示而不是char
(48代表0,49代表1)。我可以使用我在其中从所有条目中减去48
的代码。我想我只是想知道如果有一个更好的办法,或者如果这是“良好做法”
if(isdigit(*it)){
int a = (int)*it;
NumList.push_back(a-48);
advance(it,1);
}
it
是我用于遍历字符的矢量的迭代器。 NumList
是一个载体,可以容纳我找到的所有数字。最初我只是尝试push_back(*it)
,显然没有奏效。我试过用我知道用普通变量工作的所有方法将*it
转换为int
。
有什么方法可以使用吗?我在这里或在Cplusplusorg找不到一个。
P.S .:对不起,如果这是基本的我只是不太熟悉迭代器。谢谢你的帮助。
'48'当然不是写'0'的好方法,但'a''0'是做这件事的最好方法。 –
(int)*它是表示数字的字符数(以ASCII码表示),因此您必须减去48,或者如前面的注释所述,减去0,以得到数字的数字值。我不认为有更好的办法。 – Georg