最終更新日時: 2026年06月15日 14時22分22秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<cstdlib>

# std::strfroml(C++26)

    namespace std {
      int strfroml(char* s, size_t n, const char* format, long double fp);
    }

## 概要

`long double`型の浮動小数点数を文字列に変換する。

C23で`<stdlib.h>`に追加された関数であり、C++26で`<cstdlib>`に取り込まれた。

## 事前条件

`format`は、文字`%`、アスタリスク`*`を含まない精度指定 (省略可)、および変換指定子`a`・`A`・`e`・`E`・`f`・`F`・`g`・`G`のいずれか1つだけで構成されること。

## 効果

`std::snprintf(s, n, format, fp)`と等価である。

## 戻り値

`n`が十分に大きいと仮定した場合に書き込まれる文字数を、終端のヌル文字を除いて返す。

したがって、ヌル終端された出力が完全に書き込まれたのは、戻り値が非負かつ`n`未満である場合に限られる。

## 例

    #include <cstdlib>
    #include <print>

    int main()
    {
      char buf[32];
      std::strfroml(buf, sizeof(buf), "%.2Lf", 3.14159L);
      std::println("{}", buf);
    }

### 出力

    3.14

## バージョン

### 言語

- C++26

### 処理系

- Clang: 22 ❌
- GCC: 16.1 ❌
- Visual C++: 2026 Update 2 ❌

## 関連項目

- `strfromd`: `double`型を文字列に変換する
- `strfromf`: `float`型を文字列に変換する
- `std::to_chars`: 数値を文字列に変換する

## 参照

- P3348R4 C++26 should refer to C23 not C17
  - C++26がC23を参照するようになり、この関数が`<cstdlib>`に追加された