如何将const std :: string&转换为整数?

Ric*_*nop 3 c++

我有一个像这样的变量:

const std::string& iterations = "30";
Run Code Online (Sandbox Code Playgroud)

我想用它来确定"for"循环的迭代次数:

for ( int i = 0; i < iterations; i++ ) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

怎么做?我知道我可以像这样强制转换为字符串:

iterations.c_str();
Run Code Online (Sandbox Code Playgroud)

所以我尝试了c_int()但它不起作用:

iterations.c_int();
Run Code Online (Sandbox Code Playgroud)

Ale*_* C. 8

按优先顺序排列:

boost::lexical_cast

atoi

std::stringstream

sscanf

注意这lexical_cast很简单,可写在这里:

#include <exception>
#include <sstream>

struct bad_lexical_cast : std::exception {};

template<typename Target, typename Source>
Target lexical_cast(Source arg)
{
  std::stringstream interpreter;
  Target result;
  if(!(interpreter << arg) ||
     !(interpreter >> result) ||
     !(interpreter >> std::ws).eof())
    throw bad_lexical_cast();
  return result;
}
Run Code Online (Sandbox Code Playgroud)

它可以将任何东西转化为任 (学分:http://www.gotw.ca/publications/mill19.htm)

用法: int iter = lexical_cast<int>(iterations)