0

我正在尝试修改 char 数组(“1,204,342,544”)以最有效的方式删除所有逗号。我正在使用追逐指针方法来解决这个问题。我已经用 C++ 实现了解决方案,但我的代码似乎失败了。我需要一些帮助来查找/纠正我的错误。另外请建议是否有更好(更有效的方法)来实施相同的解决方案。

我知道它在 Python 中真的很简单!

arr = "1,234,34,54"
print arr.replace(',','')

在 C++ 中使用追逐指针(高效方式)

#include <iostream>
using namespace std;


char* removeCommas(char* arr) {
    char *curr = arr; // pointer to current position
    char *tail = arr; // tail pointer

    while (curr) {
        if (*curr != ',') {
            if (curr != tail) {
                *tail = *curr;
            }
            curr ++;
            tail ++;
        }
        else {
            curr ++;
        }
    }
    *tail = '\0';
    return arr;
}

int main() {
    char arr[] = "1,204,342,544";    
    removeCommas(arr);
    return 0;
}
4

3 回答 3

2

我不知道是否还有其他问题,但首先突出的是:

while (curr)

由于我没有在代码中NULLnullptr任何地方看到任何分配,我看不出这怎么可能是正确的。所以我假设您可能打算检查空字符,而不是空指针。

while (*curr) 
于 2013-03-22T05:42:08.997 回答
2
string s = "1,204,342,544";
s.erase( remove( s.begin(), s.end(), ',' ), s.end() );
于 2013-03-22T05:46:05.803 回答
0
char* removeCommas(char* arr) {
        char *curr = arr; // pointer to current position
        char *tail = arr; // tail pointer

        while(1){
                switch(*tail=*curr++){
                        case '\0':
                                return arr;
                        case  ',':
                                continue;
                        default:
                                tail++;
                }
        }
}
于 2013-09-01T15:52:47.823 回答