C++ C++;:在char数组中去除char
我正在创建一个小函数,看看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]= ____ 谢谢 当您找到一个空格时,需要将字
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++ >代码>“”实际上是一个空字符串,但是"foo bar"
删除空格字符实际上包括将所有后续字符向左移动
"foo bar"
^
|
+- bar\0
不要忘记移动最后一个空字符(“\0”),以便字符串在“r”之后正确结束。不要混淆字符串常量和字符常量:
"h"
是一个字符串常量,包含一个字符,外加一个空字符以标记终止
'h'
是一个字符常量,它是一个字符,不多不少
< C++ >代码>“”实际上是一个空字符串,但是"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;
}