potisanのプログラミングメモ

プログラミング素人です。昔の自分を育ててくれたネット情報に少しでも貢献できるよう、情報を貯めていこうと思っています。Windows環境のC++やC#がメインです。

2021-04-01から1ヶ月間の記事一覧

JavaScript 短いサンプルコード

オブジェクトを他のオブジェクトの一部にする オブジェクト配列から要素のキーセットを取得する globalThisのアルファベット小文字からはじまるプロパティの名前を一覧取得する globalThisのアルファベット大文字からはじまるプロパティの名前を一覧取得する…

JavaScript オブジェクトのプロパティ記述子を取得する

// オブジェクトのプロパティ記述子配列を取得します。 const GetObjectOwnPropertyDescArray = object => Object.entries(Object.getOwnPropertyDescriptors(window)) // プロパティ記述子配列からデータ記述子を抜き出します。 const FilterOwnPropertyDes…

C++20 標準ライブラリでUTF-16とUTF-32を変換する関数

C++標準ライブラリを使用してUTF-16とUTF-32を相互変換する関数のコードです。コンセプトにより制約するため、C++20以降用です。 u16_surrogate.hpp u16s_u32s.hpp テストコード u16_surrogate.hpp #pragma once namespace u16_surrogate { const char16_t h…

JavaScript 配列様オブジェクトかプロパティから判定する

Array.from()はlengthプロパティが正の整数とみなせるオブジェクトを配列様オブジェクト(Array-like object、配列のようなオブジェクト)と判断していると考えられます。 真の配列様オブジェクトかの判断は反復可能オブジェクト以外を与えてArray.from()の…

JavaScript 配列様オブジェクトの作成とArray.from()での利用

配列様オブジェクト(Array-like object) 配列様オブジェクトのArray.from()での利用 配列様オブジェクト(Array-like object) MDNのArray.from()の説明には「Array-like object」(「配列様オブジェクト」)あるいは「配列のようなオブジェクト」という表…

JavaScript 文字列をUTF-16コードユニットの配列へ変換する

以下のコードで文字列をUTF-16コードユニットの配列に変換できます。 Array.from("", s => Array.from({length: s.length}, (_, i) => s.charCodeAt(i))) // Array(3) [ [ 55356, 57166 ], [ 55356, 57162 ], [ 55357, 56833 ] ] Array.from("", s => Array.…

JavaScript 文字列をUnicodeコードポイントへ変換する

本文 以下のコードで文字列をUnicodeコードポイントの配列に変換できます。 Array.from("", s => s.codePointAt(0)); // Array(3) [ 127822, 127818, 128513 ] 関数にしておくと便利かもしれません。 const getCodePointsFromString = (source) => { if (typ…

C# 9 バイト配列からメモリ上の読み枠を広げた整数配列を作成する

C#

#nullable enable using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [MethodImpl(MethodImplOptions.AggressiveInlining)] static uint[] CreateUInt32ArrayRough(ReadOnlySpan<byte> value) => MemoryMarshal.Cast<byte, uint>(v</byte,></byte>…

C++ Windows環境で絵文字のstd::iswgraphがfalseな理由の考察

VC++ではワイド文字列(L"...")に絵文字を含めることができます。この文字列に対してstd::iswgraphを適用しても戻り値はfalseです。 #include <string> #include <cwctype> #include <iostream> #include <iomanip> int main() { const std::wstring s{ L"" }; for (auto i = s.cbegin(); i != s</iomanip></iostream></cwctype></string>…

C++ UTF-16サロゲートペア判定とUTF-16/UTF-32文字列の相互変換

UTF-16サロゲートペア判定とUTF-16/UTF-32文字列の相互変換コードです。Unicodeの仕様はネット上の解説ページを参照しているため、間違えてる可能性もあります。 #include <algorithm> #include <string> namespace u16_surrogatepair { const char16_t high_surrogate_first =</string></algorithm>…