问候,
我已经用谷歌搜索了所有的东西,但是我就是找不到答案。
如何在通用视窗平台(UWP)中用C++将字符串"5“转换为整数5?
我已经尝试过将其转换为(String^),所以,我知道这是没有意义的,但是你永远不会知道使用UWP。
msdn文档没有描述任何有关类型转换的内容,我在任何地方都找不到它。我不想做像String ^ => wchar_t => char -> atoi这样的事情。有没有更好的方法呢?或者我必须做这个长时间的记忆采集过程?
编辑:与您标记的不同...你能在做记号前先读一下我的描述吗?您发送的链接是将std::string转换为整数,这很简单,但我需要知道如何将String^转换为int (int32)
发布于 2016-10-24 08:59:26
Platform::String (在C++/CX中表示为String^ )提供String::Data成员,该成员将const char16*返回到内部缓冲区。然后,它可以与任何标准的C或C++字符串转换函数一起使用,如std::wcstol
long ToLong( String^ str ) {
const wchar_t* begin = str->Data();
return std::wcstol( begin, nullptr, 10 );
}或者,如果您想实现一些错误处理,并确保解释整个字符串,您可以这样写:
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,并免费获得正确的错误报告:
long ToLong( String^ str ) {
return std::stol( { str->Data(), str->Length() } );
}https://stackoverflow.com/questions/40208632
复制相似问题