在 C/C++ 中反转字符串的不同方法

简介: 给定一个字符串,编写一个 C/C++ 程序来反转它。

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战


给定一个字符串,编写一个 C/C++ 程序来反转它。


通过交换字符编写自己的反向函数: 一个简单的解决方案是编写我们自己的反向函数来反转C++ 中的字符串。


// 一个简单的 C++ 程序来反转字符串
#include <bits/stdc++.h>
using namespace std;
// 反转字符串的函数
void reverseStr(string& str)
{
  int n = str.length();
  // 从两个角开始交换字符
  for (int i = 0; i < n / 2; i++)
    swap(str[i], str[n - i - 1]);
}
// 驱动程序
int main()
{
  string str = "haiyong";
  reverseStr(str);
  cout << str;
  return 0;
}
复制代码

  1. 输出 :


gnoyiah
复制代码
  1.  
  2. 使用内置的“反向”功能:  “算法”头文件中有一个直接的功能可以进行反向操作,可以节省我们在编程时的时间。


// 反转 [begin, end] 中的元素
void reverse (BidirectionalIterator begin, 
BidirectionalIterator end);
复制代码


//一个快速编写的程序,用于使用 reverse() 反转字符串
#include <bits/stdc++.h>
using namespace std;
int main()
{
  string str = "haiyong";
  // 反向 str[begin..end]
  reverse(str.begin(), str.end());
  cout << str;
  return 0;
}
复制代码

  1. 输出 :


gnoyiah
复制代码
  1.  
  2. 只打印反向


// C++程序打印一个字符串的反转
#include <bits/stdc++.h>
using namespace std;
// 反转字符串的函数
void reverse(string str)
{
for (int i=str.length()-1; i>=0; i--)
  cout << str[i];
}
// 驱动程序代码
int main(void)
{
  string s = "haiyong";
  reverse(s);
  return (0);
}
复制代码

  1. 输出:


gnoyiah
复制代码

  1. 获取 const 字符串的反转:


// 获取const字符串反转的C++程序
#include <bits/stdc++.h>
using namespace std;
// 函数反转字符串并返回该字符串的反向字符串指针
char* reverseConstString(char const* str)
{
  // 查找字符串的长度
  int n = strlen(str);
  // 创建动态指针字符数组
  char *rev = new char[n+1];
  // 将字符串复制到 ptr 数组
  strcpy(rev, str);
  // 从两个角开始交换字符
  for (int i=0, j=n-1; i<j; i++,j--)
    swap(rev[i], rev[j]); 
  // 反转字符串的返回指针
  return rev;
}
// 驱动程序代码
int main(void)
{
  const char *s = "haiyong";
  printf("%s", reverseConstString(s));
  return (0);
}
复制代码

  1. 输出:  


gnoyiah
复制代码

  1. 使用构造函数反向字符串:将反向迭代器传递给构造函数返回一个反向字符串。


// 使用构造函数反转字符串的简单 C++ 程序
#include <bits/stdc++.h>
using namespace std;
int main(){
  string str = "haiyong";
  //反向迭代器的使用
  string rev = string(str.rbegin(),str.rend());
  cout<<rev<<endl;
  return 0;
}
复制代码

  1. 输出:  


gnoyiah
复制代码


5.使用临时字符串

// 使用构造函数反转字符串的简单 C++ 程序
#include <bits/stdc++.h>
using namespace std;
int main(){
  string str = "haiyong";
  int n=str.length();
  //存储反向的临时字符串
  string rev;
  for(int i=n-1;i>=0;i--)
  rev.push_back(str[i]);
  cout<<rev<<endl;
  return 0;
}
复制代码


输出:

gnoyiah



目录
相关文章
|
4月前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
110 4
|
4月前
|
编译器 API C语言
超级好用的C++实用库之跨平台实用方法
超级好用的C++实用库之跨平台实用方法
57 6
|
3月前
|
缓存 网络协议 API
C/C++ StringToAddress(字符串转 boost::asio::ip::address)
通过上述步骤和示例代码,你可以轻松地在C++项目中实现从字符串到 `boost::asio::ip::address`的转换,从而充分利用Boost.Asio库进行网络编程。
118 0
|
3月前
|
编译器 C语言 C++
C/C++数字与字符串互相转换
C/C++数字与字符串互相转换
|
4月前
|
C++
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
HTML+JavaScript构建一个将C/C++定义的ANSI字符串转换为MASM32定义的DWUniCode字符串的工具
|
4月前
|
JavaScript 前端开发 Java
通过Gtest访问C++静态、私有、保护变量和方法
通过Gtest访问C++静态、私有、保护变量和方法
135 0
|
4月前
|
存储 C++
C++(五)String 字符串类
本文档详细介绍了C++中的`string`类,包括定义、初始化、字符串比较及数值与字符串之间的转换方法。`string`类简化了字符串处理,提供了丰富的功能如字符串查找、比较、拼接和替换等。文档通过示例代码展示了如何使用这些功能,并介绍了如何将数值转换为字符串以及反之亦然的方法。此外,还展示了如何使用`string`数组存储和遍历多个字符串。
|
5月前
|
C++
C++ 避免多重定义的方法
C++ 避免多重定义的方法
69 0
|
5月前
|
Dart API C语言
Dart ffi 使用问题之想在C/C++中创建异步线程来调用Dart方法,如何操作
Dart ffi 使用问题之想在C/C++中创建异步线程来调用Dart方法,如何操作
|
6月前
|
算法 C++
2730. 找到最长的半重复子字符串(c++,滑动窗口)
2730. 找到最长的半重复子字符串(c++,滑动窗口)