Функция вставки пробелов после того, как char работала вне кода, но внутри возвращала ошибку в C++

Я сделал функцию вставки пробелов после определенного символа (ов) он отлично работает для любых длинных символов, когда они разделены. как сейчас

using namespace std;
insert_spaces_before_delims(string a)
{
 vector<int> found;
 int temp;
 int i=0;
//string a = "Ahmeed+Khaled+awwad=Ahmedd-AWWAd";                //string be a parameter
 temp = a.find_first_of("+- = ");                              // chars be parameters if need to change
 found.push_back(temp);
 a.insert(found[i]," ");
 while(a.find_first_of("+- = ",found[i]+2)!= string::npos)
 {
  temp = a.find_first_of("+- = ",found[i]+2);
  found.push_back(temp);
  a.insert(found[i+1]," ");
  i++;
 }
}
int main(void)
{
 string equation;
 getline(cin,equation);
 insert_spaces_before_delims(equation);
 //the output is the string with spaces before every +,- and = 
}

i debug the function when returns that error "terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::replace: __pos (which is 4294967295) > this->size() (which is 0)"

по условию (== строка :: npos) почему он снова появляется в коде и останавливает код от продолжения, просто верните ошибку и завершите программу.

struct variable_content
{
//string coefficient;                 // coefficient of x ( value before x)
    int value;                           // value of X = coefficient but in another type
    string order;                       // order (number ) of x (number after x)
};
spilit__each_string(string,char,variable_content,vector<string>,vector<variable_content>);
spliting_each_variable(char ,variable_content ,vector<string> ,vector<variable_content>);
insert_spaces_before_delims(string );

int main()
{
  int number_equations;
   string equation;                             //receive string
   vector<string> equations;                    // vector for equations input from user
   vector<string> variables;                    // initial empty vector of string for each var as strings at all
   vector<variable_content> variable;           //initial empty vector of struct for each var
   char delim[] = " ";
   char delim1[] = "xX";
   cin>>number_equations;
   number_equations++;
   variable_content temp;
   for (int i=0; i<number_equations;i++)
   {
     getline(cin,equation);                             //worked
   //***the problem function , if i commented it the code works fine**** 
    insert_spaces_before_delims(equation);              //return error and stop the code
    equations.push_back(equation);                    //worked
    //make a temp struct and put tok1 in coefficient of it
    spilit__each_string(equation, delim,temp,variables,variable);//worked
    spliting_each_variable(delim1,temp ,variables,variable);     //worked
    }
   //printing vector of struct of every variable
    for(int y=0; y<variable.size();y++)
    {
       cout<<variable[y].value<<"\t"<<variable[y].order<<endl;
    }
}

что важные части и ссылка всего кода на github.https://github.com/AhmedKAwwad/Split-String-into-vector/blob/master/main.cpp

Связанный: ericlippert.com/2014/03/05/how-to-debug-small-programs

UKMonkey 11.06.2018 18:01

@UKMonkey действительно полезно, спасибо

Ahmed Awaad 11.06.2018 18:06

Несвязанный, какой бы компилятор вы ни использовали, который допускает подразумеваемые возвращаемые типы из ваших функций, он не является стандартным, поэтому возьмите за привычку их указывать.

WhozCraig 11.06.2018 18:24
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ эта ссылка заставляет меня отлаживать мой код и обнаруживать, что наличие cin >> и getline, смешанных в моем коде, вызывает ошибку, затем я использую getline, а затем конвертирую строку в целое число спасибо за комментарии

Другие вопросы по теме