2016-03-14 3 views
-5

Ну, я пытаюсь подвести строки, содержащие номер (только) в ex.Как суммировать значение в строке

std::string a = "103"; 
std::string b = "13"; 

И я хочу, чтобы подвести итог, так что результат будет 116

мне было интересно о substring или charAt, но я не знаю, если подход с использованием любого из них является хорошим.

Надеюсь, это хорошо объяснено.

+1

И вы пытались это сделать? Если да, покажите нам код. – CinCout

+0

@HappyCoder nope еще нет, я только начал изучать C++, если одно из этих решений хорошо, просто скажите мне, какой из них и я делаю это сам, но я все еще не знаю, как heh, но не отправляйте код :) – Bulit

+0

Простите, что я ошибся, Строка У меня плохая привычка от java – Bulit

ответ

4

Предполагая String является std::string то

std::stoi(a) + std::stoi(b) является одним из способов.

Но обратите внимание, что a и b должны содержать только последовательности символов, которые могут быть конвертированы в целочисленных типов, и каждый аргумент +, наряду с общим сусло не перелива int.

Если это не так, рассмотрите std::stol, 'std :: stoll', или std::stod. Обратите внимание, что std::stoll подходит для 64-битного неподписанного интегрального типа.

+0

Что делать, если он переполняет int? Мне нужно это в последовательности Фибоначчи для n = max 100000. Поэтому я делаю свой собственный bigint. – Bulit

+0

«std :: stoll» должен быть достаточным: «long long» должен быть не менее 64 бит. – Bathsheba

+0

Я должен прочитать об этом, но thx заранее за помощь – Bulit

2

Этого можно достичь, используя std::istringstream.

int iA, iB; 
std::istringstream(a) >> iA; 
std::istringstream(b) >> iB; 

int sum = iA + iB; 

Если вы используете пользовательский класс, как вы упомянули в комментарии вы можете переопределить operator>> и до сих пор используют выше решение.

+0

ОК, это поможет мне в какой-то форме hehe thx – Bulit

+0

Плюс один, это хорошее решение pre-C++ 11. – Bathsheba

Смежные вопросы