如果是空间,自制移除

时间:2015-04-08 00:39:20

标签: c++ mingw

我正在学习C ++并且正在练习,我正在制作一个四功能计算器。我正在尝试(出于实践原因)创建我自己的函数,从字符串中删除所有空格。函数编译但程序在执行函数时崩溃。有谁能告诉我出了什么问题?

功能:

int operate(std::string inRaw) {
    // Parsing
    int j = 0;
    int inMinLen;
    int inLen = inRaw.length();
    std::string inSub, in[inLen];
    for(int i = 0; i < inLen; i++) {
        inSub = inRaw.substr(i, 1);
        while(inSub != " ") {
            in[j] = inSub;
            j++;
        }
        inMinLen = j+1;
    }
    std::string inMin[inMinLen];
    for(int k = 0; k < inMinLen; k++) {
        inMin[k] = in[k];
        std::cout << in[k]; // DEBUG
    }
}

2 个答案:

答案 0 :(得分:2)

这个while循环:

    while(inSub != " ") {

永远不会完成,因为你永远不会在循环中更改insub的值。

答案 1 :(得分:1)

仅供参考,不调用任何预定义字符串的函数
函数/方法除了大小,只有一个数组:

void operate(std::string inRaw) {
    size_t len = inRaw.length();
    size_t current = 0;
    char *data = new char[len + 1];

    for(size_t i = 0; i < len; i++)
    {
        data[current] = inRaw[i];
        if(data[current] != ' ')
            current++;
    }

    data[current] = '\0';
    cout << data << endl;
    delete[] data;
}

但是KerrekSB示例中的解决方案仍然是可取的。