C++サンプル集

【第1部】C言語(K&R検証)編

0020.文字列を逆順にする

ソース紹介

CPPファイルに記述
#include <iostream>
#include <cstdio>
using namespace std;

/*
文字列sを逆順にする
*/
void reverse(char s[]) {
    for (int i = 0,j = (int)strlen(s) - 1; i < j; i++, j--) {
        char c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}

/*
文字列を逆順にするテスト
*/
int main()
{
    char str[] = "hello world";
    reverse(str);
    cout << str << endl;
    return 0;
}
出力
dlrow olleh

サンプル説明

 このサンプルは昇順に配列の添え字を追いかける i と、降順に追いかける j i < jの条件で、それぞれの指す文字の交換を行うことでreverseを処理します。 , (コンマ)で区切ることで、複数の処理を並列処理のように実行できます。

ソース紹介

 C++reverseアルゴリズムを使うとreverse()関数は必要なくなります。
CPPファイルに記述
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <string>
using namespace std;

/*
文字列を逆順にするテスト
*/
int main()
{
    string str = "hello world";
    reverse(str.begin(), str.end());
    cout << str << endl;
    return 0;
}

サンプル説明

 ここではreverseアルゴリズムを使用しています。文字列に限らず、このアルゴリズムは、配列などを逆順にします。

K&Rでの記述

 元になったのは第3章:制御の流れに記述されています。ループの説明のところです。