//============================================================================
// Name : Jhomeworkc++.cpp
// Author : frank
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include <stack>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
class Grade{
public:
void GetWords(Grade *grade,string words);
//void GradeLtr(Grade *grade,char ltr);
void printGradeStack(Grade *grade);
void printGradeVector(Grade *grade);
void printGradeArray(Grade *grade);
public:
string words;
};
void Grade :: GetWords(Grade *grade,string words){
grade -> words = words;
}
// 1 array 方式
void Grade :: printGradeArray(Grade *grade){
//unsigned int i = string :: length(grade->words);
const char *str =grade->words.c_str();//c_str 是c++ 中 string类 (class) 的 函数,它能把 string类 的对象里的字符串 转换成 C 中 char 型变量 的 字符串
int len = grade->words.length();
cout << "array: ";
for(int i = len -1;i >=0;i--){
cout << str[i];
}
cout << endl;
}
// 2 以下是通过 vector 向量获得,是通过迭代器实现的反向输出
void Grade :: printGradeVector(Grade *grade){
const char *str =grade->words.c_str();//c_str 是c++ 中 string类 (class) 的 函数,它能把 string类 的对象里的字符串 转换成 C 中 char 型变量 的 字符串
int len = grade->words.length();
vector<char> colorvect(str, str+len);//创建了字符型向量
vector<char>::iterator it;//迭代器主要负责从容器中获取一个对像 容器的迭代器 it
reverse(colorvect.begin(), colorvect.end());
cout << "Vector: ";
for(it=colorvect.begin(); it!=colorvect.end();++it)
{
cout << *it;
}
cout << endl;
}
// 3 以下是通过栈的方式,栈是一种后进先出的数据结构,因此不用反向
void Grade :: printGradeStack(Grade *grade){
const char *str =grade->words.c_str();//c_str 是c++ 中 string类 (class) 的 函数,它能把 string类 的对象里的字符串 转换成 C 中 char 型变量 的 字符串
int len = grade->words.length();
stack <char> st;
int j = 0;
while (len --){
st.push(str[j++]);
}
cout << "stack: ";
while(!st.empty()){
cout << st.top();
st.pop();
}
cout << endl;
}
int main() {
Grade g1;
cout << "Input one words " << endl;
cin >> g1.words;
g1.GetWords(&g1,g1.words);
g1.printGradeArray(&g1);
g1.printGradeVector(&g1);
g1.printGradeStack(&g1);
return 0;
}
stack vector array 三种方式实现字符的反向输出
最新推荐文章于 2022-10-17 21:57:05 发布