以明文整数转换字符串

时间:2015-04-03 17:59:45

标签: c++

我想写一个函数将字符串转换成3个整数,可以传递给另一个函数。

exsistingFunction(int parameter1, int p2, int p3);

假设我希望分别传递128,2,4作为参数1,2,3。我想像这样传递它,

exsistingFunction(expectedfn("128,2,4"));

任何人都可以解释一下expectfn()会是什么吗?

1 个答案:

答案 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;
}