最終更新日時:
が更新

履歴 編集

function
<cstring>

std::strxfrm

namespace std {
  size_t strxfrm(char* s1, const char* s2, size_t n);
}

概要

文字列を、ロケールに基づいて変換する。

変換後の文字列同士をstrcmpで比較すると、変換前の文字列同士をstrcollで比較したのと同じ符号の結果が得られる。

効果

現在のロケールのLC_COLLATEカテゴリに従ってs2が指す文字列を変換し、その結果をs1が指す配列へ、終端のヌル文字を含めて最大n文字コピーする。

戻り値n以上である場合、s1が指す配列の内容は不定である。

n0の場合、s1にヌルポインタを渡してもよい。この用途は、変換に必要な配列サイズを取得するために使用できる。

戻り値

変換後の文字列の長さ (終端のヌル文字を含まない) を返す。

備考

  • この関数はロケールに依存するため、フリースタンディング処理系では提供されない。

#include <cstring>
#include <iostream>

int main()
{
  char buf[16];

  // 現在のロケールに基づいて"hello"を変換する
  std::size_t len = std::strxfrm(buf, "hello", sizeof(buf));

  std::cout << len << std::endl;
}

出力例

5

バージョン

言語

  • C++98

関連項目

  • strcoll: 文字列を比較する(ロケール依存)
  • strcmp: 文字列を比較する

参照