将字符串转换为size_t

Hum*_*awi 14 c++ string size-t c++11

有没有办法转换std::stringsize_t?问题是size_t平台可靠类型(虽然它是结果sizeof).所以,我无法保证转换stringunsigned longunsigned 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
Run Code Online (Sandbox Code Playgroud)

Lin*_*gxi 9

您可能希望使用sscanf说明%zu符,用于std::size_t.

sscanf(input.c_str(), "%zu", &index);
Run Code Online (Sandbox Code Playgroud)

看看这里.

从字面上看,我怀疑那里是一个重载operator >>std::basic_istringstreamstd::size_t.看到这里.


小智 9

您可以使用 std::stringstream

std::string string = "12345";
std::stringstream sstream(string);
size_t result;
sstream >> result;
std::cout << result << std::endl;
Run Code Online (Sandbox Code Playgroud)


Bat*_*eba 6

您可以%zdscanf-type方法中用作格式说明符.

或者使用一个std::stringstream会超载>>size_t.


Dev*_*lar 6

让我们假设一分钟size_t是一个typedef到一个现有的整数,即相同的宽度或者unsigned intunsigned longunsigned long long

就标准措词而言,可以是单独的(更大)类型,但我认为这种可能性很小。

与假设的工作size_t是不是更大的unsigned long long,无论是stoullstrtoull将随后投地size_t应该工作。


根据相同的假设(size_tunsigned long或定义unsigned long long),该类型有一个operator>>重载。