如何在 C++ 中反轉字串

Jinku Hu 2023年10月12日
  1. 使用字串建構函式來反轉字串
  2. 使用 std::reverse() 演算法反轉字串
  3. 使用 std::copy() 演算法反轉字串
如何在 C++ 中反轉字串

本文將介紹如何在 C++ 中反轉字串。

使用字串建構函式來反轉字串

std::basic_string 有建構函式,它可以用範圍內的內容構建一個字串。然後,我們可以宣告一個新的字串變數,並向其建構函式提供原始字串變數的反向迭代器-tmp_s。下面的例子演示了這個方法,並輸出兩個字串進行驗證。

#include <algorithm>
#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::reverse;
using std::string;

int main() {
  string tmp_s = "This string will be reversed";
  cout << tmp_s << endl;

  string tmp_s_reversed(tmp_s.rbegin(), tmp_s.rend());
  cout << tmp_s_reversed << endl;

  return EXIT_SUCCESS;
}

輸出:

This string will be reversed
desrever eb lliw gnirts sihT

使用 std::reverse() 演算法反轉字串

std::reverse 方法來自 <algorithm>STL 庫,它將範圍內元素的順序反轉。該方法對作為引數傳遞的物件進行操作,並不返回資料的新副本,所以我們需要宣告另一個變數來儲存原始字串。

需要注意的是,如果演算法未能分配記憶體,reverse 函式會丟擲 std::bad_alloc 異常。

#include <algorithm>
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;

int main() {
  string tmp_s = "This string will be reversed";
  cout << tmp_s << endl;

  string tmp_s_reversed(tmp_s);
  reverse(tmp_s_reversed.begin(), tmp_s_reversed.end());
  cout << tmp_s_reversed << endl;

  return EXIT_SUCCESS;
}

使用 std::copy() 演算法反轉字串

std::copy 是另一種強大的演算法,可以用於多種情況。該方案初始化一個新的字串變數,並使用內建的 resize 方法修改其大小。接下來,我們呼叫 copy 方法,用原始字串的資料填充宣告的字串。但要注意,前兩個引數應該是源範圍的反向迭代器。

#include <algorithm>
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;

int main() {
  string tmp_s = "This string will be reversed";
  cout << tmp_s << endl;

  string tmp_s_reversed;
  tmp_s_reversed.resize(tmp_s.size());
  copy(tmp_s.rbegin(), tmp_s.rend(), tmp_s_reversed.begin());
  cout << tmp_s_reversed << endl;

  return EXIT_SUCCESS;
}

在不需要儲存反向字串資料的情況下,我們可以使用 copy() 演算法直接將字串資料按反向順序輸出到控制檯,如以下程式碼示例所示。

#include <algorithm>
#include <iostream>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::reverse;
using std::string;

int main() {
  string tmp_s = "This string will be reversed";
  cout << tmp_s << endl;

  copy(tmp_s.rbegin(), tmp_s.rend(), std::ostream_iterator<char>(cout, ""));

  return EXIT_SUCCESS;
}
作者: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

DelftStack.com 創辦人。Jinku 在機器人和汽車行業工作了8多年。他在自動測試、遠端測試及從耐久性測試中創建報告時磨練了自己的程式設計技能。他擁有電氣/ 電子工程背景,但他也擴展了自己的興趣到嵌入式電子、嵌入式程式設計以及前端和後端程式設計。

LinkedIn Facebook

相關文章 - C++ String