Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:在char数组中去除char_C++ - Fatal编程技术网

C++ C++;:在char数组中去除char

C++ C++;:在char数组中去除char,c++,C++,我正在创建一个小函数,看看char数组中的char是否是一个空格。如果是,它将删除该空间。到目前为止,我已经: void clean(char* n, int size){ for (int i = 0; i<size; i++){ if (n[i]==' '){ n[i]= ''; } } 我的问题是:在没有任何库的情况下,如何去掉字符数组中的空间。我应该在这里写什么: n[i]= ____ 谢谢 当您找到一个空格时,需要将字

我正在创建一个小函数,看看char数组中的char是否是一个空格。如果是,它将删除该空间。到目前为止,我已经:

void clean(char* n, int size){
for (int i = 0; i<size; i++){
        if (n[i]==' '){
            n[i]= '';
        }
}
我的问题是:在没有任何库的情况下,如何去掉字符数组中的空间。我应该在这里写什么:

n[i]= ____ 

谢谢

当您找到一个空格时,需要将字符串的其余部分向左移动

"foo bar"
    ^
    |
    +- bar\0
因此,您需要的代码是(假设以null结尾的字符串)


这将把字符串复制到它自己,当您找到一个需要将字符串的其余部分向左移动的空间时,将沿途删除空格

"foo bar"
    ^
    |
    +- bar\0
因此,您需要的代码是(假设以null结尾的字符串)


这会将字符串复制到自身,同时删除空格

不要混淆字符串常量和字符常量:

"h"
是一个字符串常量,包含一个字符,外加一个空字符以标记终止

'h'
是一个字符常量,它是一个字符,不多不少

< C++ >代码>“”实际上是一个空字符串,但是 > '/COD>无效的语法,因为字符必须有一个值。 从字符串中删除单个字符比这更复杂

例如,如果您有如下字符串:

"foo bar"
删除空格字符实际上包括将所有后续字符向左移动

"foo bar"
    ^
    |
    +- bar\0

不要忘记移动最后一个空字符(“\0”),以便字符串在“r”之后正确结束。

不要混淆字符串常量和字符常量:

"h"
是一个字符串常量,包含一个字符,外加一个空字符以标记终止

'h'
是一个字符常量,它是一个字符,不多不少

< C++ >代码>“”实际上是一个空字符串,但是 > '/COD>无效的语法,因为字符必须有一个值。 从字符串中删除单个字符比这更复杂

例如,如果您有如下字符串:

"foo bar"
删除空格字符实际上包括将所有后续字符向左移动

"foo bar"
    ^
    |
    +- bar\0

并且不要忘记也移动最后的空字符(‘0’),这样字符串在“r”之后正确结束。

如果你记得C++标准算法与数组工作得很好,那么这个问题最优雅的解决办法是。以下是一个例子:

#include <algorithm>
#include <iostream>
#include <string.h>

void clean(char* n, int size) {
    std::remove(n, n + size, ' ');
}

int main() {
    char const* test = "foo bar";
    // just some quick and dirty modifiable test data:
    char* copy = new char[strlen(test) + 1];
    strcpy(copy, test);

    clean(copy, strlen(copy) + 1);

    std::cout << copy << "\n";

    delete[] copy;
}

<>如果你记得C++标准算法与数组工作得很好,那么这个问题最优雅的解决方案是。以下是一个例子:

#include <algorithm>
#include <iostream>
#include <string.h>

void clean(char* n, int size) {
    std::remove(n, n + size, ' ');
}

int main() {
    char const* test = "foo bar";
    // just some quick and dirty modifiable test data:
    char* copy = new char[strlen(test) + 1];
    strcpy(copy, test);

    clean(copy, strlen(copy) + 1);

    std::cout << copy << "\n";

    delete[] copy;
}