나는이 수업이 있습니다 문자열을 숫자 형식으로 변환하는 일반적인 방법은 무엇입니까?
template<typename T> class Parser
{
public:
Parser() : count(0) {}
virtual void parse(const string&);
void get_token(void);
private:
T result;
char token;
string expression;
int count;
};
이제 클래스, 제네릭하고 내가 숫자를 감지하는이 방법을 사용하는 것, 되었습니까
result
이 말하는
double
없었했다.
result
이후
while((strchr("1234567890.",token))
{
/* add token to a "temp" string */
/* etc. etc. */
}
result = atof(temp.c_str());
그러나 제네릭, 내가 atof
및 atoi
같은 어떤 방법을 사용할 수 없습니다 등
어떻게해야합니까?
#include <boost/lexical_cast.hpp>
void Parser<T>::get_token() {
std::string token = ...;
result = boost::lexical_cast<T>(token);
}
추가 예외 처리 필요 :
¤'std :: istringstream'을 사용할 수 있습니다. 또는 내부적으로 스트림을 사용하는'boost :: lexical_cast'를 사용할 수 있습니다. 건배 & hth., –
@ Xeo : 거의. 그래도 관련이 있습니다. –
@ Lightness : 예, 다시 읽은 후, "일반적인"부분을 놓친 것으로 나타났습니다. – Xeo