我有一个像这样的变量:
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)
按优先顺序排列:
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)