我一直在尝试使用for_each将字符串向量打印到cout.但是,在制定语句时,我发现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);
}
Run Code Online (Sandbox Code Playgroud)
我认为这两个语句看起来应该与编译器完全相同.显然他们不是.那么有什么不同呢?
正如Tomalak和Prasoon表示我需要调用此函数:
std::ostream& operator<<(std::ostream&, const std::string&);
Run Code Online (Sandbox Code Playgroud)
所以以下示例将起作用:
#include <iostream>
#include <string>
int main()
{
std::string message = "Hello World!\n";
operator<<(std::cout, message);
}
Run Code Online (Sandbox Code Playgroud)
至于我原来的目标(用的for_each打印字符串的向量):现在看来似乎是更好地使用std::copy具有std::ostream_iterator如下图所示:如何使用的for_each输出cout的?
Lig*_*ica 13
你在找std::ostream& operator<<(std::ostream&, const std::string&);.这是一个免费的功能.