C++ c++;使用stringstream从字符串内部提取int

C++ c++;使用stringstream从字符串内部提取int,c++,stringstream,C++,Stringstream,我有一个字符串,line可以提取里面的int吗 我可以使用一个非常基本的正则表达式,但我在这里找到的一些stringstream解决方案看起来更干净,并转换为int类型 string line = " <li id="episode_275">" 只需查找第一个数字,然后让strtol从这一点开始为您进行整数解析,即可完成此操作: #include <string> #include <cctype> #include <cstd

我有一个字符串,
line
可以提取里面的int吗

我可以使用一个非常基本的正则表达式,但我在这里找到的一些stringstream解决方案看起来更干净,并转换为int类型

string line = "            <li id="episode_275">"

只需查找第一个数字,然后让
strtol
从这一点开始为您进行整数解析,即可完成此操作:

#include <string>
#include <cctype>
#include <cstdlib>

int extractFirstIntInString(std::string const& s)
{
    for (std::size_t i = 0; i != s.size(); ++i)
        if (std::isdigit(s[i]))
            return std::strtol(s.c_str() + i, nullptr, 10);
    return 0;    // no integer in string
}
#包括
#包括
#包括
int extractFirstIntInstalling(标准::字符串常量(&s)
{
对于(std::size_t i=0;i!=s.size();++i)
如果(标准::isdigit(s[i]))
返回std::strtol(s.c_str()+i,nullptr,10);
返回0;//字符串中没有整数
}

可能更适合
std..regex
std::stoi
进行匹配。@πάνταῥεῖ 我想这对stringstream来说太复杂了,对吧?
#include <string>
#include <cctype>
#include <cstdlib>

int extractFirstIntInString(std::string const& s)
{
    for (std::size_t i = 0; i != s.size(); ++i)
        if (std::isdigit(s[i]))
            return std::strtol(s.c_str() + i, nullptr, 10);
    return 0;    // no integer in string
}