sizeof()とstd::size()の挙動の違い

#include <cstdio>
#include <cstring>
#include <iostream>

int main(void)
{
        char dst[8];
        std::string src="abcdef";
        std::cout << "sizeof dst:" << sizeof(dst) << std::endl;
        std::cout << "sizeof src:" << sizeof(src) << std::endl;
        std::cout << "std::size dst:" << std::size(dst) << std::endl;
        std::cout << "std::size src:" << std::size(src) << std::endl;
        return 0;
}
実行結果
sizeof dst:8
sizeof src:32
std::size dst:8
std::size src:6

つまり、stringの文字数をsizeof()で取得しようとすると、意図しない結果になるので、std::size()使おうねという話。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です