【问题标题】:Cannot print string with std::end [closed]无法使用 std::end 打印字符串 [关闭]
【发布时间】:2017-11-09 18:41:59
【问题描述】:

我在用 C++ 打印字符串时遇到问题。

我知道在 SO 上有很多关于这个问题的话题,但大多数人说包括 <string><iostream>namespace std。但我做了所有这些,但仍然遇到问题。这是我的代码和错误。

#include <iostream>
#include <string>
using namespace std;
//...
void affiche_date(int annee, int nbjours) {
    string mois;
    if (nbjours>31) {
         mois = "avril";
         nbjours -= 31;
    } else {
        mois = "avril";
    }
    cout << "Date de Paques en " << annee << " : " << nbjours << " " << mois << end;
}

int main() {
    int annee ( demander_annee() ) ;
    int jour ( date_paques(annee) );
    affiche_date(annee, jour);
}

这是我编译时遇到的错误:

"error: no match for ‘operator<<’ (operand types are ‘std::basic_ostream<char>’ and ‘<unresolved overloaded function type>’)" 

这个错误来自我给你的函数中的 cout 行。

我在 linux Ubuntu 上使用 Geany 并使用 c++11。

感谢您的帮助

【问题讨论】:

  • 我想你的意思是std::endl
  • 你忘记了一封信。投票结束为错字。 (您书中的“endl”不是错字。只有丹麦人知道为什么会这样拼写。)
  • 你在 main 里面也有函数定义——这是不对的
  • @pm100:这些声明非常接近最令人头疼的解析。 anneejour 被声明为整数,它们使用括号中的函数调用结果进行初始化。编辑:Demo
  • @molbdnilo -- endlend of line 的缩写,就像 ends 它是 end of string 的缩写一样。跨度>

标签: c++ linux c++11 ubuntu


【解决方案1】:

std::end() 是一个用于获取容器末尾的迭代器的函数。

您的意思是改用std::endl 流操纵器。

注意:在您的实际代码中避免使用 using namespace std;,或者利用 using 指令仅引入您需要的内容,或者喜欢使用命名空间的限定名称,就像我在这里一样。

【讨论】:

  • 感谢您的回答。正如你所说,这只是一个错字......但你所说的很有趣。你能解释一下为什么不使用 using namespace std 吗?我使用它只是因为我正在学习一个教程,他们说要使用它
  • 太棒了。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
相关资源
最近更新 更多