需要帮助..如何从字符串中读取整数

时间:2015-03-28 06:30:27

标签: arduino

我是编程新手。我正在Arduino计划中获得字符串。

如何从下面的字符串中仅提取整数(" 240")并转换为int。

GET /?LED=240&submit=Change+Pin+5%21 HTTP/1.1

我尝试使用index of()阅读,但无法成功。

1 个答案:

答案 0 :(得分:0)

您可以参考下面的C ++逻辑。

#include "stdafx.h"

#include <iostream>
#include <string>
#include <sstream>
#include <assert.h>

template <typename T>
T StringToNumber(const std::string &Text)
{
    std::istringstream ss(Text);
    T result;
    ss >> result;
    if(ss.fail())
    {
        result = 0;
        assert(0);
    }

    return result;
}

int GetLEDNumber(const std::string& input)
{
    int retValue = 0;
    const std::string startPattern = "LED=";
    const std::string endPattern = "&submit";

    size_t firstPos = input.find(startPattern);
    if(std::string::npos != firstPos)
    {
        size_t endPos = input.find(endPattern);
        if (std::string::npos != endPos)
        {
            size_t positionOfLedNum = firstPos + startPattern.length();
            size_t sizeOfLedNum = endPattern.length() - positionOfLedNum;
            std::string ledNumber = input.substr(positionOfLedNum, sizeOfLedNum);

            retValue = StringToNumber<int>(ledNumber);
        }
    }

    return retValue;
}

int main()
{
    std::string input = "GET /?LED=240&submit=Change+Pin+5%21 HTTP/1.1";
    std::cout << GetLEDNumber(input) << std::endl;

    return 0;
}