有没有办法转换std::string
成size_t
?问题是size_t
平台可靠类型(虽然它是结果sizeof
).所以,我无法保证转换string
为unsigned long
或unsigned int
将正确执行.
编辑:一个简单的例子是:
std::cout<< "Enter the index:"; std::string input; std::cin >> input; size_t index=string_to_size_t(input); //Work with index to do something
Lingxi.. 9
您可能希望使用sscanf
说明%zu
符,用于std::size_t
.
sscanf(input.c_str(), "%zu", &index);
看看这里.
从字面上看,我怀疑那里是一个重载operator >>
的std::basic_istringstream
对std::size_t
.看到这里.
您可能希望使用sscanf
说明%zu
符,用于std::size_t
.
sscanf(input.c_str(), "%zu", &index);
看看这里.
从字面上看,我怀疑那里是一个重载operator >>
的std::basic_istringstream
对std::size_t
.看到这里.
您可以使用 std::stringstream
std::string string = "12345"; std::stringstream sstream(string); size_t result; sstream >> result; std::cout << result << std::endl;
您可以%zd
在scanf
-type方法中用作格式说明符.
或者使用一个std::stringstream
会超载>>
的size_t
.
让我们假设一分钟size_t
是一个typedef到一个现有的整数,即相同的宽度或者unsigned int
,unsigned long
或unsigned long long
。
就标准措词而言,可以是单独的(更大)类型,但我认为这种可能性很小。
与假设的工作size_t
是不是更大的比unsigned long long
,无论是stoull或strtoull将随后投地size_t
应该工作。
根据相同的假设(size_t
用unsigned long
或定义unsigned long long
),该类型将有一个operator>>
重载。