首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP将字符串转换为整数

UWP将字符串转换为整数
EN

Stack Overflow用户
提问于 2016-10-24 06:57:51
回答 1查看 2K关注 0票数 1

问候,

我已经用谷歌搜索了所有的东西,但是我就是找不到答案。

如何在通用视窗平台(UWP)中用C++将字符串"5“转换为整数5?

我已经尝试过将其转换为(String^),所以,我知道这是没有意义的,但是你永远不会知道使用UWP。

msdn文档没有描述任何有关类型转换的内容,我在任何地方都找不到它。我不想做像String ^ => wchar_t => char -> atoi这样的事情。有没有更好的方法呢?或者我必须做这个长时间的记忆采集过程?

编辑:与您标记的不同...你能在做记号前先读一下我的描述吗?您发送的链接是将std::string转换为整数,这很简单,但我需要知道如何将String^转换为int (int32)

EN

回答 1

Stack Overflow用户

发布于 2016-10-24 08:59:26

Platform::String (在C++/CX中表示为String^ )提供String::Data成员,该成员将const char16*返回到内部缓冲区。然后,它可以与任何标准的C或C++字符串转换函数一起使用,如std::wcstol

代码语言:javascript
复制
long ToLong( String^ str ) {
    const wchar_t* begin = str->Data();
    return std::wcstol( begin, nullptr, 10 );
}

或者,如果您想实现一些错误处理,并确保解释整个字符串,您可以这样写:

代码语言:javascript
复制
long ToLong( String^ str ) {
    const wchar_t* begin = str->Data();
    const wchar_t* end = str->Data() + std::wcslen( str->Data() );
    wchar_t* last_interpreted{ nullptr };
    long l = std::wcstol( begin, &last_interpreted, 10 );
    if ( last_interpreted != end ) {
        throw ref new InvalidArgumentException();
    }
    return l;
}

请注意,没有分配额外的内存。转换功能对Platform::String的存储序列进行操作。

如果您可以腾出一个潜在的临时内存分配,您可以使用std::stol,并免费获得正确的错误报告:

代码语言:javascript
复制
long ToLong( String^ str ) {
    return std::stol( { str->Data(), str->Length() } );
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40208632

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档