Вот то, что я реализовал в прошлый раз, и этот код работает для большинства моих тестовых случаев, но не работает для этих случаев. [code]#include #include #include #include #include #include #include
long long ConvertStringToNumber(std::string number) { long long int finalNumber = 0; bool isNegative = false; int i = 0; if (number.at(0) == '-') { isNegative = true; i++; } for (; i < number.length(); i++) { if (number.at(i) < '0' || number.at(i) > '9') { throw std::invalid_argument("Some error..."); } if (finalNumber > (std::numeric_limits::max() - (number.at(i) - '0')) / 10) { throw std::overflow_error("Input string contains a number that is too large!!!"); throw std::range_error("Number is too large"); } finalNumber = finalNumber * 10 + (number.at(i) - '0'); } return isNegative ? -finalNumber : finalNumber; }
std::vector NumbersInString(std::string s) { std::vector numbers; std::string currentNumber = ""; bool isNumber = true; for (int i = 0; i < s.length(); i++) { char c = s.at(i); if ((c >= '0' && c = '0' && currentNumber.at(0) 'z') && (s.at(i) < 'A' || s.at(i) > 'Z'))) { try { long long int number = ConvertStringToNumber(currentNumber); numbers.push_back(number); } catch (std::domain_error &k) { // skip it } } } currentNumber = ""; isNumber = false; } }
if (isNumber && !currentNumber.empty()) { try { long long int number = ConvertStringToNumber(currentNumber); numbers.push_back(number); } catch (std::domain_error &e) { } // skip again } return numbers; }
Предположим, у меня есть две функции: func1 и func2. func1 возвращает список из 3 целых чисел, а func2 принимает кортеж из 3 целых чисел. Как мне преобразовать список в кортеж таким образом, чтобы можно было предотвратить ошибки с помощью средств...
Кто-нибудь знает прототип BFont::DrawString(wchar_t*, int, int, int, int, int, int) в библиотеке BFont++? Кажется, она была популярна где-то в 2003 году, мне бы хотелось получить прототип этой функции для модификации старой программы. Буду очень...
Я пытаюсь использовать vector из binary_function для вызова transform(), но получаю ошибку в g++: #include #include #include использование пространства имен std; int main(void) { вектор v1 = {1, 2, 10, 23, 13}; вектор v2 = {10, 2, 4, -1, 3}; вектор...