我刚刚开始自学 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
它。并使用 template
或 auto
不会改变 C++ 中的所有内容都是静态类型的事实,只是编译器会自动为您创建不同版本的重载函数。
编辑
正如@Peter 在评论部分指出的那样,说“cout
是可以重载的东西是完全错误的”,更准确地说是重载 operator<<
对于 ostream
以及对应的类
关于c++ - 传递给函数时转换参数 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50072069/