c++ - 传递给函数时转换参数 (c++)

标签 c++ variables parameter-passing variable-types

我刚刚开始自学 C++,并且在函数参数传递方面遇到了困难。例如,我正在使用我自己的打印函数,您只需将字符串放入参数并将其记录到控制台。

//Print Function
void print(std::string message = "") {
    std::cout << message << std::endl;
}

但是,因为我将它声明为 std::string 变量,所以如果我向它传递一个数字,它就不会打印出来。最终我想制作一个像 Python 一样的输入和打印系统。我该怎么做?有没有办法将参数转换为字符串?或者其他一些解决方案。另一个有类似问题的函数是我的输入函数:

//Input function (Enter does not work without text, space is not text)
std::string input(const char* message = "") {
    std::cout << message;
    std::string x;
    std::cin >> x;
    return x;
}

这不允许返回为 int 女巫使使用输入的计算更加困难。提前感谢任何帮助!

~摩西

最佳答案

此外template ,如果你的编译器支持C++14,你也可以使用auto具有 lambda 函数。您可以将所有这些都写在 main 函数中。

auto print = [](const auto& message) {std::cout << message << std::endl;};
print(1); //1
print("AAA"); //AAA

请注意,与 Python 不同,当您想要打印某些内容时,无需将其转换为 string。第一的。只要你要打印的东西重载了cout , 你可以简单地 cout它。并使用 templateauto不会改变 C++ 中的所有内容都是静态类型的事实,只是编译器会自动为您创建不同版本的重载函数。

编辑 正如@Peter 在评论部分指出的那样,说“cout 是可以重载的东西是完全错误的”,更准确地说是重载 operator<<对于 ostream以及对应的类

关于c++ - 传递给函数时转换参数 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50072069/

相关文章:

c - 在递归中传递指针会导致段错误

c++ - 在 C++ 中获取 iPhone 目录路径

c++ - 如何在 VS2005 中提高大型 C++ 应用程序的链接性能

java - 用于 fovy 和 aspect 透视的 OpenGL 投影矩阵

c - 将变量传递给 C 中的函数

MySQL::在变量中运行 SQL 语句

C++静态变量和多进程

python - 包含多个语句的 Try 子句

c - 按引用传递但参数值为空

php - 如何在 CakePHP 中将参数从一个 Controller 传递到另一个 Controller ?