在 char 在代码外部工作但在 C++ 中出现 return 错误后插入空格函数
inserting spaces function after char worked outside the code but inside return error in 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)"
按条件(==string::npos)
为什么它再次出现在代码中并停止代码继续,只是 return 错误并结束程序。
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
上整个代码的 link
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
这个 link 让我调试我的代码,发现在我的代码中混合了 cin>> 和 getline 会出错,然后我使用 getline 然后将字符串转换为整数
感谢评论
我制作了一个在特定字符后插入空格的函数 它适用于任何长的,任何分开的字符。 像现在一样
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)"
按条件(==string::npos) 为什么它再次出现在代码中并停止代码继续,只是 return 错误并结束程序。
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
上整个代码的 linkhttps://ericlippert.com/2014/03/05/how-to-debug-small-programs/ 这个 link 让我调试我的代码,发现在我的代码中混合了 cin>> 和 getline 会出错,然后我使用 getline 然后将字符串转换为整数 感谢评论