[英]converting string in clear integer
我想編寫一個函數,用於將字符串轉換為3個可以傳遞給另一個函數的整數。
exsistingFunction(int parameter1, int p2, int p3);
假設我要分別傳遞128,2,4作為參數1,2,3。 我想這樣通過
exsistingFunction(expectedfn("128,2,4"));
誰能解釋Expectfn()將會是什么?
我同意弗拉德的觀點,您不能從函數中返回3個值。
但是,另一個選擇是可能的。
創建一個函數existingFunction(std :: string s)。
此函數可以使用stringstream,然后從s中提取3個int參數。 然后它將調用現存的函數(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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.