如何仅从字符串中获取数字?

时间:2017-06-22 09:42:47

标签: c++ string numbers

我需要将字符串中的数字复制到c ++中的另一个字符串。我写了这段代码,但它只复制字符串中的第一个数字。

class Number{
    private:
        string value;
    public:
        void Print(){
            cout<<value;
        }
        Number(string dgr){
            int i = 0; 
            for(int j=0; j<dgr.length();j++){
                if(isdigit(dgr[j])){
                    value[i]=dgr[j];
                    i++;
                }
            }
        }
};

3 个答案:

答案 0 :(得分:2)

使用您显示的代码,字符串value字符串。这意味着所有索引都将超出范围,您将拥有未定义的行为

而是将字符附加到字符串:

value += dgr[j];

答案 1 :(得分:0)

字符串中的

operator []可用于修改已存在的字符。它不会延长字符串的长度。因此,如果您预先为“值”指定一些值,您会看到在那里修改的字符(最多为此字符串的长度)。

你需要的是这样的事情:

value += dgr[j];

答案 2 :(得分:0)

我无法发表评论,但作为回应: 哇谢谢,但仍有问题。当我输入“a6s54da65sd4a”时,它返回“6546541877994624”。什么是“1877994624”的一部分?当我重新编译并运行它时,数字不会改变。

我无法在任何地方看到重置或初始化的值。价值的大小是多少? 我会使用append而不是访问“value”中的各种元素。类似于value.append(1,dgr [j]);