proudmore
@proudmore

Как получить int из значения параметра r1_input строки типа «GET /set?r1_input=123?&nocache=885898.3828703746 HTTP/1.1»?

Собственно, сабж. Не могу сам разобраться в указателях, и как, используя strtok получить нужный мне участок строки, чтобы его конвертнуть в int
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ответы на вопрос 2
auto end = str.find("?", start);
Это неверно, точнее неверно сформулирован вопрос.
Искать нужно "&"
Реальное значение передано в поле "123?"
Ответ написан
Комментировать
AtomKrieg
@AtomKrieg
Давай я поищу в Google за тебя
Пользуйтесь всеми преимуществами STL в с++. strtok в нем не очень нужен.
#include <string>
#include <iostream>
#include <stdexcept>

int r1_input(const std::string& str)
{
	using namespace std;	
	string varname = "r1_input=";

	auto start = str.find(varname);
	if (start == string::npos)
		throw invalid_argument(varname+ " not found");

	start += varname.size();

	auto end = str.find("?", start);
	size_t len = (end == string::npos) ? string::npos : end-start;
	return stoi(str.substr(start, len));
}

int main()
{
	std::string input = "GET /set?r1_input=123?&nocache=885898.3828703746 HTTP/1.1";
	std::cout << r1_input(input) << std::endl;

	system("pause");
	return 0;
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы