преобразовать строку в размер t
есть ли способ, чтобы преобразовать std::string to size_t?
Проблема в том, что size_t тип платформы зависящий (пока он результат sizeof). Итак, я не могу гарантировать, что преобразование string to 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
5 ответов
можно использовать %zd Как спецификатор формата в scanf-тип подхода.
или использовать std::stringstream что будет перегружен >> to size_t.
можно использовать std::stringstream
std::string string = "12345";
std::stringstream sstream(string);
size_t result;
sstream >> result;
std::cout << result << std::endl;
предположим на минуту, что size_t является typedef для существующей целое число, т. е. такая же ширина, как и unsigned int, unsigned long или unsigned long long.
AFAIR it мог бы быть отдельным (еще большим) типом, насколько это касается стандартной формулировки, но я считаю это маловероятным.
работа с этим предположением, что size_t не больше чем unsigned long long, либо stoull или strtoull с последующим приведением к size_t должны работать.
из того же предположения (size_t определяется как unsigned long или unsigned long long), есть б быть operator>> перегрузка для этого типа.
#include <sstream>
std::istringstream iss("a");
size_t size;
iss >> size;
С помощью iss.fail (), вы проверяете сбой. Вместо ("a") используйте значение, которое вы хотите преобразовать.