我想写一个函数将字符串转换成3个整数,可以传递给另一个函数。
exsistingFunction(int parameter1, int p2, int p3);
假设我希望分别传递128,2,4作为参数1,2,3。我想像这样传递它,
exsistingFunction(expectedfn("128,2,4"));
任何人都可以解释一下expectfn()会是什么吗?
答案 0 :(得分:1)
我同意Vlad,你不能从函数中返回3个值。
然而,另一种选择是可能的。
创建函数existingFunction(std :: string s)。
此函数可以使用stringstream(s),然后从s中提取3个int参数。然后它将调用existingfunction(int,int,int)。
这可以起作用,因为existingFunction()的两个版本具有不同的签名。
示例代码:
void existingFunction(int p1, int p2, int p3)
{
std::cout << p1 << " "
<< p2 << " "
<< p3 << " " << std::endl;
}
void existingFunction(std::string s)
{
std::stringstream ss(s);
int p1 = 0;
int p2 = 0;
int p3 = 0;
char kar = 0;
// existingFunction(p1, p2, p3); // diagnostic to confirm 0's
ss >> p1 >> kar
>> p2 >> kar
>> p3;
existingFunction(p1, p2, p3);
}
int t169(void)
{
existingFunction("128,2,4");
return(0);
}
我更喜欢上述内容,但使用了以下想法(添加默认参数)来添加所需的功能,而无需重新编写所有调用:
void existingFunction(int p1, int p2, int p3,
std::string s = "")
{
if(s.size()) { // s dominates p1,p2,p3 when provided
std::stringstream ss(s);
char kar = 0;
ss >> p1 >> kar
>> p2 >> kar
>> p3;
}
// when s.size() == 0, use p1,p2,p3
std::cout << p1 << " "
<< p2 << " "
<< p3 << " " << std::endl;
}