C++ 字符串到两个数字
我需要帮助创建一个函数,该函数接受一个字符串,该字符串包含由“”分隔的两个数字(空格)。然后将这两个数字传递给另一个函数以创建分数格式 我尝试使用if语句定位空格,然后创建两个子字符串,分别包含空格字符前后的值C++ 字符串到两个数字,c++,string,int,C++,String,Int,我需要帮助创建一个函数,该函数接受一个字符串,该字符串包含由“”分隔的两个数字(空格)。然后将这两个数字传递给另一个函数以创建分数格式 我尝试使用if语句定位空格,然后创建两个子字符串,分别包含空格字符前后的值 Fraction::Fraction(string frac) { int t, b; for (int i = 0; i < frac.size(); i++) { if (frac.subs
Fraction::Fraction(string frac)
{
int t, b;
for (int i = 0; i < frac.size(); i++)
{
if (frac.substr(i, 1)==" ")
{
t = stoi(frac.substr(0,i-1)); //number before space
b = stoi(frac.substr(i + 1)); //number after space
break;
}
}
this->setFraction(t, b);
}
分数::分数(字符串分数)
{
int t,b;
对于(int i=0;i设定分数(t,b);
}
例如,字符串s=“1 2”转换成t=1,b=2。
< p>你在C++中,只使用STD:: 让你的生活复杂化是没有用的,这样可以用额外的空格/标签来管理案例 <>但是我鼓励你总是检查你是否得到结果,而不是假设/希望你得到一个 你在C++中,只使用STD:: 让你的生活复杂化是没有用的,这样可以用额外的空格/标签来管理案例但我鼓励你经常检查自己是否得到了结果,而不是假设/希望你得到了一个没有必要这样做
substr(I,1)
dance。那太贵了。只需使用frac[i]
访问frac
中的第i个字符。或者使用frac.find(“”)
而不是编写自己的循环。这可以用更简单的方法来完成。注意,如果字符串中没有空格,t
和b
将保持未初始化状态。@PeteBecker,你的意思是;-)@布鲁诺-是的。谢谢。没有必要跳那种substr(i,1)
dance。那太贵了。只需使用frac[i]
访问frac
中的第i个字符。或者使用frac.find(“”)
而不是编写自己的循环。这可以用更简单的方法来完成。注意,如果字符串中没有空格,t
和b
将保持未初始化状态。@PeteBecker,你的意思是;-)@布鲁诺-是的。谢谢。我用C++的方式,改变了一些线来适应我的问题,它是有效的。D谢谢你!我用C++的方式,改变了一些线,以适应我的问题,它的工作。D谢谢你!
std::string s("1 2");
std::istringstream ss(s);
int t, b;
if (ss >> t >> b)
std::cout << t << '/' << b << std::endl;
else
std::cerr << "invalid form " << s << std::endl;
std::string s("1 2");
int t, b;
if (sscanf(s.c_str(), "%d %d", &t, &b) == 2)
std::cout << t << '/' << b << std::endl;
else
std::cerr << "invalid form " << s << std::endl;