Минимальный базовый код:
std::string s = "35.28";
s.erase(std::remove(s.begin(), s.end(), '.'), s.end()); //removing the dot
std::stringstream ss(s);
int value;
ss >> value;
value *= 10;
std::cout << value;
Выход:
35280
Онлайн демо: http://ideone.com/apRNP
Это основная идея. Вы можете работать над приведенным выше кодом, чтобы сделать его более гибким, чтобы его можно было использовать и для других номеров.
EDIT:
Вот одно гибкое решение:
int Convert(std::string s, int multiplier)
{
size_t pos = s.find('.');
if ( pos != std::string::npos)
{
pos = s.size() - (pos+1);
s.erase(std::remove(s.begin(), s.end(), '.'), s.end());
while(pos) { multiplier /= 10; pos--; }
}
else
multiplier = 1;
std::stringstream ss(s);
int value;
ss >> value;
return value * multiplier;
}
Тестовый код:
int main() {
std::cout << Convert("35.28", 1000) << std::endl; //35.28 -> 35280
std::cout << Convert("3.28", 1000) << std::endl; //3.28 -> 3280
std::cout << Convert("352.8", 1000) << std::endl; //352.8 -> 352800
std::cout << Convert("35.20", 1000) << std::endl; //35.20 -> 35200
std::cout << Convert("3528", 1000) << std::endl; //no change
return 0;
}
Выход:
35280
3280
352800
35200
3528
Онлайн-демонстрация: http://ideone.com/uCujP