Sprout.Weed で変換不可能な文字列の位置を取得する

strtol の第二引数と同じですね。
メンバ関数 current() で取得出来るみたいです。

[ソース]

#define SPROUT_CONFIG_SUPPORT_TEMPORARY_CONTAINER_ITERATION
#include <sprout/weed.hpp>


int
main(){
    namespace w = sprout::weed;

    {
        static constexpr auto data = sprout::to_string("1234abcd");
        static constexpr auto result = w::parse(data.begin(), data.end(), w::int_);

        static_assert(result.success(), "");
        static_assert(result.attr()    == 1234, "");
        static_assert(result.current() == data.begin() + 4, "");
    }

    {
        static constexpr auto data = sprout::to_string("abcd");
        static constexpr auto result = w::parse(data.begin(), data.end(), w::int_);

        static_assert(!result.success(), "");
        static_assert(result.current() == data.begin(), "");
    }

    {
        static constexpr auto data = sprout::to_string("1234abcd");
        static constexpr auto result = w::parse(data.begin(), data.end(), w::int_ >> w::eoi);

        static_assert(!result.success(), "");
        static_assert(result.current() == data.begin(), "");
    }

    return 0;
}

[コンパイラ]

  • g++ (GCC) 4.7.0 20111210 (experimental)