簡體   English   中英

以明整數轉換字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM