プログラムを書こう!

実務や自作アプリ開発で習得した役に立つソフトウェア技術情報を発信するブログ

C++/CLIで配列をソートする。

この記事は2018年08月11日に投稿しました。

目次

  1. はじめに
  2. ソート処理
  3. おわりに

これからはじめるVisualC++2010forマネージコードC++/CLI

これからはじめるVisualC++2010forマネージコードC++/CLI

1. はじめに

こんにちは、iOSのエディタアプリPWEditorの開発者の二俣です。

今回は業務で使用しているC++/CLIの話です。
ディレクトリにあるファイルを読み込み、ファイルの内容を表示する処理を機能を実装した時のことです。
ファイルは複数あり、YYYYMMDD_HHMMDD.txtのようにファイル名に年月日時分秒が付けられていました。
ファイルの内容は最新のファイルから表示するという仕様でした。
そのためファイル名を降順にソートする必要がありました。

目次へ

2. ソート処理

最初、次のような処理を考えました。

  1. ファイル名の一覧を取得する。
  2. 取得したファイル名の一覧を降順でソートする。
  3. 降順にソートしたファイル名で、順番にファイル内容を表示する。

1と3の処理はすぐできたのですが、2の降順にソートする方法がarrayに用意されていないようでした。
そのため一旦昇順でソートしてから、終端から並びなおすようにしました。

// パス名のディレクトリにある、"*.txt"に一致するファイルパス名の一覧を取得します。
array<String^>^ filePathNames = Directory::GetFiles("パス名", "*.txt");

// ファイル名を昇順でソートします。
array<String^>::Sort(filePathnames);

// 昇順にソートしたファイル名を終端から順に取り出し、
// ファイルの内容を表示します。
int count = filePathNames->Length;
for (int i = count; i >= 0; i--)
{
    // ファイルの内容を表示する処理
}

API Reference
Directory::GetFilesメソッド
Array::Sortメソッド

目次へ

3. おわりに

実装した時は配列を逆順に並び替えるArray::Reverseメソッドを調べきれず、自分で実装するはめになりました。
後日他のことを調べていた時に、Array::Reverseメソッドが見つかり、実装した時に見つけられていれば...と、少し残念思いました。
でもこういった経験をすると、このことは割と記憶に残るので良しとしました。

高単価案件が最短二日で決まる!【ポテパンフリーランス】

つくって覚えるC++/CLI入門

つくって覚えるC++/CLI入門

目次へ