字符串的处理,求教怎样写更好?该如何处理
字符串的处理,求教怎样写更好?
比如题目为怎样把字符串 "Hello world! This is c/c++! "里的空格数出来,并且处理成" Helloworld!Thisisc/c++!"?
想了半天憋出如下代码,感觉很累赘,,请教有无更好的方法?而且这里的字符串在处理的时候好不好?调试的时候常看到乱码,所幸输出没有.....
------解决方案--------------------
遇到空格把后面的字符往前移。
------解决方案--------------------
------解决方案--------------------
跟2楼的思路一样,都是“遇到空格跳过,不是空格的话写到新的数组(或内存空间)去”。2楼指针用的很好。
比如题目为怎样把字符串 "Hello world! This is c/c++! "里的空格数出来,并且处理成" Helloworld!Thisisc/c++!"?
想了半天憋出如下代码,感觉很累赘,,请教有无更好的方法?而且这里的字符串在处理的时候好不好?调试的时候常看到乱码,所幸输出没有.....
- C/C++ code
#include <stdio.h> #include <stdlib.h> void main() { char * str="Hello world! This is c/c++! "; int i = 0; int j = 0; int count = 0; int len = 0; for(i=0; str[i] != '\0'; i++) len += 1; char str2[50]; for(i=0; i <= len; i++) { if(' ' == str[i]) { count +=1; } } for(i=0; i < count; i++) { str2[i] = ' '; } for(i=0; i <= len; i++) { if(' ' != str[i]) { str2[count++] = str[i]; } } printf("str2 is %s ", str2); }
------解决方案--------------------
遇到空格把后面的字符往前移。
------解决方案--------------------
------解决方案--------------------
跟2楼的思路一样,都是“遇到空格跳过,不是空格的话写到新的数组(或内存空间)去”。2楼指针用的很好。
- C/C++ code
#include <stdio.h> int main(void) { char *str="Hello world! This is c/c++! "; char *p; int i, j, len; len = strlen(str); p = (char *)malloc(len + 1); for(i = 0, j = 0; i < len; ++i) { if(str[i] != ' ') { p[j] = str[i]; j++; } } printf("%s\n", p); free(p); return 0; }
------解决方案--------------------
#include<iostream>
#include<string>
#include<cctype>
using namespace std;
int main()
{
string str("Hello world! This is c/c++! ");
string::iterator iter=str.begin ();
for(;iter!=str.end();){
if(isspace(*iter))
iter=str.erase(iter);
else
++iter;
}
cout<<str<<endl;
}
这是我在VS2010下写的,希望对你有帮助
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
11楼的办法最方便有效。顺便补充一下:
再定义一个变量int count = 0;在循环里添加一句count++;空格个数也统计出来了。
------解决方案--------------------