我需要将字符串中的数字复制到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++;
}
}
}
};
答案 0 :(得分:2)
使用您显示的代码,字符串value
是空字符串。这意味着所有索引都将超出范围,您将拥有未定义的行为。
而是将字符附加到字符串:
value += dgr[j];
答案 1 :(得分:0)
operator []可用于修改已存在的字符。它不会延长字符串的长度。因此,如果您预先为“值”指定一些值,您会看到在那里修改的字符(最多为此字符串的长度)。
你需要的是这样的事情:
value += dgr[j];
答案 2 :(得分:0)
我无法发表评论,但作为回应: 哇谢谢,但仍有问题。当我输入“a6s54da65sd4a”时,它返回“6546541877994624”。什么是“1877994624”的一部分?当我重新编译并运行它时,数字不会改变。
我无法在任何地方看到重置或初始化的值。价值的大小是多少? 我会使用append而不是访问“value”中的各种元素。类似于value.append(1,dgr [j]);