ZER0x32
@ZER0x32
кратко обо мне = ""

Деление строки на 2 части и преобразование в int?

for (int i = 1; i <= k; i++) {
		getline(file, text);
		cout << "1 part '" << text.substr(0, text.find('/')) << "'  sec  part '" << text.substr(text.find('/') + 1)<<"'" << endl;
		day += stoi(text.substr(0,text.find("/")).c_str())- 48 + stoi (text.substr(text.find("/")+1).c_str()) - 48;
		cout << "day " << day << endl;
	}

у меня на входе строка по типу dd/mm , причем первая цифра может быть нулем. Я пытаюсь выделить подстроку, но ничего не получается, т.к. find не находит "/" и возвращает огромное значение. Не знаю что делать, т.к. только учу язык, а времени мало.
  • Вопрос задан
  • 76 просмотров
Пригласить эксперта
Ответы на вопрос 1
@hasalex
разработчик
в общих чертах так:
std::string str = "00/34";
    std::string::size_type slash = str.find("/");
    if (slash != std::string::npos) {
      int num1 = atoi(str.substr(0, slash-1).c_str());
      int num2 = atoi(str.substr(slash+1).c_str());
    
      cout<<"Num1: " << num1 << ", Num2: " << num2;
    }


Только тут нет проверок на пограничные случаи (когда нет числа перед или после слэша, когда там не число и пр.)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SberTech Москва
от 300 000 до 435 000 ₽
SberTech Москва
от 200 000 до 350 000 ₽
SberTech Москва
от 200 000 до 350 000 ₽