在 C 中传递一个字符串

新手上路,请多包涵

快速可能是显而易见的问题。

如果我有:

 void print(string input)
{
  cout << input << endl;
}

我怎么称呼它:

 print("Yo!");

它抱怨我传递的是 char *,而不是 std::string。有没有办法在通话中进行类型转换?代替:

 string send = "Yo!";
print(send);

原文由 Josh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 434
2 个回答

您可以编写函数来获取 const std::string&

 void print(const std::string& input)
{
    cout << input << endl;
}

const char*

 void print(const char* input)
{
    cout << input << endl;
}

这两种方式都允许你这样称呼它:

 print("Hello World!\n"); // A temporary is made
std::string someString = //...
print(someString); // No temporary is made

第二个版本确实需要 c_str() 来调用 std::string s:

 print("Hello World!\n"); // No temporary is made
std::string someString = //...
print(someString.c_str()); // No temporary is made

原文由 In silico 发布,翻译遵循 CC BY-SA 2.5 许可协议

对于打印等简单的事情,您可以在预处理器中定义一种函数,例如:

 #define print(x) cout << x << endl

原文由 Detremmerie Olivier 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题