gpt4 book ai didi

c++ - `cout << x` 和 `cout.operator <<(x)` 之间的区别?

转载 作者:太空狗 更新时间:2023-10-29 23:21:31 24 4
gpt4 key购买 nike

我一直在尝试使用 for_each 来打印要计算的字符串 vector 。但是,在制定声明时我发现 std::ostream::operator<<(const std::string &);未定义导致编译器错误。下面的代码说明了这个问题:

#include <iostream>
#include <string>


int main()
{
std::string message = "Hello World!\n";

// This works
std::cout << message;

// Compiler error
std::cout.operator <<(message);
}

我认为这两个语句在编译器看来应该是相同的。显然他们不是。那有什么区别呢?

已解决

正如 Tomalak 和 Prasoon 指出的,我需要调用这个函数:

std::ostream& operator<<(std::ostream&, const std::string&);

所以下面的示例将起作用:

#include <iostream>
#include <string>


int main()
{
std::string message = "Hello World!\n";
operator<<(std::cout, message);
}

关于我最初的目标(使用 for_each 打印字符串 vector ):似乎使用 std::copy 更好与 std::ostream_iterator如此处所示:How do I use for_each to output to cout?

最佳答案

您正在寻找 std::ostream& operator<<(std::ostream&, const std::string&); .这是一项免费功能。

关于c++ - `cout << x` 和 `cout.operator <<(x)` 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4763067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com