【问题标题】:C++ cout and endl not printing correctly on terminalC++ cout 和 endl 无法在终端上正确打印
【发布时间】:2019-04-06 21:02:17
【问题描述】:

出于某种原因,我的 cout 语句无法在我的终端上正确打印。它创造了空间。 当我有以下代码时:

void Test::testSorted(){
   vector<int> unsorted = {4, 6, 5, 2, 1, 3};
   vector<int> sorted   =  {1, 2, 3, 4, 5, 6};

   cout << "Testing isSorted function for unsorted Pancake ... : " << endl;
   game.setPancakeStack(unsorted);
   bool condition1 = game.isStackSorted(); 

   cout << "Testing isSorted function for sorted Pancake ... : " ;
   game.setPancakeStack(sorted);
   bool condition2 = game.isStackSorted(); 
}

终端以确切的空间量精确输出:

Testing isSorted function for unsorted Pancake ... : 
                                                     Testing isSorted function for sorted Pancake ... :

注意:我一直在为一个项目使用 ncurses,我觉得这可能会弄乱我的外壳。但我什至不知道在哪里解决这个问题

【问题讨论】:

  • 如果你担心你的 shell 搞砸了,你有没有尝试退出 shell 并在新的 shell 中运行它?
  • 如果你杀死或退出了一个 curses 应用程序而没有让它正确清理,那么是的,你可能会遇到这样的问题。如果 curses 程序是你的,那么确保你自己清理干净,然后干净地退出。
  • 另外,你确定你的函数中没有任何东西可以打印空格吗?您是否尝试过评论所有内容并仅运行输出语句以确保它实际上是您的终端?
  • 是的,我试图将所有内容都注释掉并打印出来,它给了我那些空白
  • 这个问题并不清楚代码是否是 ncurses 应用程序的一部分,或者 ncurses 的东西以前是无关的,现在你只是想取消你的 shell。如果是后者,命令行实用程序 reset 应该会有所帮助。

标签: c++ cout endl


【解决方案1】:

此症状是 ncurses 应用程序未正确退出并使终端处于错误“模式”的教科书案例。只需打开一个新终端即可修复它。

如果 ncurses 应用程序确实干净地退出,它在 main 的末尾缺少一些取消初始化 (endwin()?),这要么由您修复(如果您编写了应用程序)或由您报告给开发人员(否则)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-10
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多