【问题标题】:How to transform a string in a function?如何在函数中转换字符串?
【发布时间】:2017-05-09 21:09:23
【问题描述】:

我确实有这个代码:

#include <iostream>

double a(){return 1.23;}
double b(){return 1.21;}

int main(){
std::string function0;
return EXIT_SUCCESS;
}

我想要的是:如果 function0 = 'a' 我希望能够在函数 a 中转换字符串 function0,但我不知道该怎么做。如果function0等于b,我想调用函数b。

感谢您的帮助!

【问题讨论】:

标签: c++ c++11 c++14


【解决方案1】:

您要做的是根据字符串变量的值调用其中一个函数。这很容易实现。

  1. main() 中的 if else 构造:

    if (function0 == "a") {
        foo = a();
    } else if (function0 == "b") {
        foo = b();
    }
    
  2. 合并函数并修改结果,因此它的行为取决于输入:

    double newFunction (string input) {
         double valueForA = 1.23;
         double valueForB = 1.21;
    
         if (input == "a") {
             return valueForA;
         } else if (input == "b") {
             return valueForB;
         } else {
             //what if it's not "a" nor "b"?
             return 0;
         }
    }
    

    用法:

    double foo = newFunction(function0);
    

注:

  1. 不要忽略函数的返回值,如果返回值不重要,请使用void 函数。
  2. 学习使用变量(而不是无用的函数)。您可以在 main 中创建 2 个变量,就是这样。
  3. 访问此link 以开始使用 C++。如果没有好的参考资料,您会讨厌学习它,那会很伤心,还是会这样?
  4. 停止使用您目前用来学习编程的书籍/网站。这(可能)是垃圾。

【讨论】:

    【解决方案2】:

    函数指针可能会有所帮助。

    double (*funcPtr)();
    int main() {
      if (function0 == "a")
        funcPtr = &a;
      else 
        funcPtr = &b;
    
      (*funcPtr)(); //calling a() or b()
    }
    

    【讨论】:

    • 考虑到他是怎么打标签c++11和c++14的,建议std::function会是更好的选择。
    猜你喜欢
    • 2015-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    相关资源
    最近更新 更多