c++实现含有中文字符的字符串逆转,如:“我是小萌新”转换成“新萌小是我”
一个中文字符占两字节,所以逆转也得两两字符进行逆转,如上图可得出0和8,1和9,2和6,3和7进行下标交换由此可得出以下代码:#include#include <Windows.h>#include// 实现含有中文字符的字符串逆转,如:“我是小萌新”转换成“新萌小是我”using namespace std;void ni_zhuan_str(string &a...
·
一个中文字符占两字节,所以逆转也得两两字符进行逆转,如上图
可得出0和8,1和9,2和6,3和7进行下标交换
由此可得出以下代码:
#include <iostream>
#include <Windows.h>
#include <string>
// 实现含有中文字符的字符串逆转,如:“我是小萌新”转换成“新萌小是我”
using namespace std;
void ni_zhuan_str(string &str, int len) {
int lenth = len;
for (int i=0; i<lenth/2; i+=2,len-=2) {
int ret = str[i];
str[i] = str[len-2];
str[len-2] = ret;
ret = str[i+1];
str[i+1] = str[len-1];
str[len-1] = ret;
}
}
int main(void) {
string str;
cout << "请输入中文字符串:";
cin >> str;
int len = str.length();
ni_zhuan_str(str, len);
/*
for (int i=0; i<str.length()/2; i+=2,len-=2) {
int ret = str[i];
str[i] = str[len-2];
str[len-2] = ret;
ret = str[i+1];
str[i+1] = str[len-1];
str[len-1] = ret;
}
*/
cout << "逆转后:" << str << endl;
system("pause");
return 0;
}
重点看for循环里面下标的交换
运行结果:
更多推荐
所有评论(0)