c++字符串反转操作
一 字符串按字节反转(this is a student ==> tneduts a si siht)
- /*************************************************************************
- > File Name: testStringByte.h
- > Author: qiaozp
- > Mail: qiaozongpeng@163.com
- > Created Time: 2014-9-30 11:21:15
- > Attention: this is a student ===> tneduts a si siht
- ************************************************************************/
- #include <iostream>
- #include <string.h>
- using namespace std;
- void reverseByByte(char* p, char* e)
- {
- //方法就是按位赋值到目的字符串
- int i = 0;
- int size = strlen(p);
- e[size] = '\0';
- while((--size) >= 0)
- {
- e[i++] = p[size];
- }
- }
- int main()
- {
- char* p = "you are a student!";
- char e[20] = {0};
- reverseByByte(p, e);
- cout << e << endl;
- }
二 字符串按单词反转(this is a student ==> student a is this)
- /*************************************************************************
- > File Name: testStringWord.h
- > Author: qiaozp
- > Mail: qiaozongpeng@163.com
- > Created Time: 2014-9-30 11:21:15
- > Attention: this is a student ===> student a is this
- ************************************************************************/
- #include <iostream>
- #include <string.h>
- using namespace std;
- void reverseByWord(char* p, char* e)
- {
- //方法就是记录每个整的单词的开始和结束位置,然后拷贝到目标字符串
- int len = strlen(p);
- int end = len;
- int start = 0;
- memset(e, 0, len);
- while(len > 0)
- {
- end = len;
- while ((p[len - 1] != ' ') && (len > 0))
- {
- --len;
- };
- start = len--;
- strncpy(e + strlen(e), p + start, end - start);
- e[strlen(e)] = ' ';
- }
- e[strlen(e) - 1] = '\0'; //多出一个空格 谢谢二楼的提醒
- }
- int main()
- {
- char* p = "you are a student!";
- char e[20] = {0};
- reverseByWord(p, e);
- cout << e << endl;
- }
浙公网安备 33010602011771号