android ndk std,C ++-Android NDK std :: to_string supp

我无法使用sources/cxx-stl/llvm-libc++/src/string.cpp,它给出了有关未定义异常的一些错误。 所以我回到了to_string(int)。

但是在NDK源中,在sources/cxx-stl/llvm-libc++/src/string.cpp中,我找到了to_string(int)的实现,并尝试将其复制到我的代码中。 经过一些更正后,它起作用了。

所以我的最后一段代码是:

#include

#include

using namespace std;

template

inline

S

as_string(P sprintf_like, S s, const typename S::value_type* fmt, V a)

{

typedef typename S::size_type size_type;

size_type available = s.size();

while (true)

{

int status = sprintf_like(&s[0], available + 1, fmt, a);

if ( status >= 0 )

{

size_type used = static_cast(status);

if ( used <= available )

{

s.resize( used );

break;

}

available = used; // Assume this is advice of how much space we need.

}

else

available = available * 2 + 1;

s.resize(available);

}

return s;

}

template ::value>

struct initial_string;

template

struct initial_string

{

string

operator()() const

{

string s;

s.resize(s.capacity());

return s;

}

};

template

struct initial_string

{

wstring

operator()() const

{

const size_t n = (numeric_limits::digits / 3)

+ ((numeric_limits::digits % 3) != 0)

+ 1;

wstring s(n, wchar_t());

s.resize(s.capacity());

return s;

}

};

template

struct initial_string

{

wstring

operator()() const

{

wstring s(20, wchar_t());

s.resize(s.capacity());

return s;

}

};

string to_string(int val)

{

return as_string(snprintf, initial_string()(), "%d", val);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值