문자열을 숫자로 바꿀 때 간단하게 digit 검사를 하고 값을 변환 하는 예제
#include "stdafx.h"
#include < string >
#include < iostream >
#include < locale >
#include < algorithm >

int to_int( const std::string& intString )
{
    bool isDigit = std::all_of( intString.begin(), intString.end(), 
        [](const std::string::value_type& c) -> bool
    {
        return std::isdigit(c, std::locale());
    });

    return isDigit ? std::stoi( intString ) : int();
}

float to_float( const std::string& floatString)
{
    bool isDigit = std::all_of( floatString.begin(), floatString.end(), 
        [](const std::string::value_type& c) -> bool
    {
        return std::isdigit(c, std::locale()) || (c == '.');
    });

    return isDigit ? std::stof( floatString ) : float();
}

int _tmain(int argc, _TCHAR* argv[])
{
    std::string invalidIntString = "a10a";
    std::cout << "invalid int : " << to_int(invalidIntString) << std::endl;

    std::string  validIntString = "10";
    std::cout << "valid int : " << to_int(validIntString) << std::endl;

    std::string invalidFloatString = "a10.1a";
    std::cout << "invalid float : " << to_float(invalidFloatString) << std::endl;

    std::string validFloatString = "10.1";
    std::cout << "valid float : " << to_float(validFloatString) << std::endl;
    
    return 0;
}
2012/02/27 04:28 2012/02/27 04:28

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요