调试简单控制台程序的问题:: CLion

时间:2014-10-02 01:55:08

标签: c++ console console-application clion

作为Java开发人员之后,我正在尝试学习基本的C ++。所以我决定试试CLion。我编写这个基本代码只是为了熟悉一些C ++语法。

#include <iostream>
using namespace std;

int main() {
    string word;

    cout << "Enter a word to reverse characters: " << endl;
    getline(cin, word);

    for(int i = word.length(); i != -1; i--) {
        cout << word[i];
    }

    return 0;
}

代码功能齐全。它会反转你输入的任何单词。我想逐步查看变量和不变量,并测试出CLion的调试器。

当我到达

时,我的问题就出现了
getline(cin, word);

当我踏上这一行时,我输入一个单词然后按回车键。然后一步一步。我这样做后没有任何反应;所有步骤,按钮等都被禁用。我无法继续循环,或运行剩余的代码。

我已经多次使用Eclipse的调试器进行Java开发而没有任何问题。任何想法都可能有所帮助。

TL; DR如何使用CLion逐步执行带有基本输入和输出的C ++命令行程序?

3 个答案:

答案 0 :(得分:11)

我已经复制了这个问题 - 看起来像是在调试换行符被IDE吞没而没有传回给程序时。 I've submitted a bug to JetBrains。除了退出IDE并直接使用GDB或其他IDE进行调试之外,我没有办法解决这个问题。


更新:此问题已在Clion EAP Build 140.1221.2中修复。它甚至在发行说明中列出了第一个更改:

  

最有价值的变化是:

     
      
  • 调试器不再挂起'cin&gt;&gt;'运算符。
  •   

答案 1 :(得分:1)

查看代码,如果一切正确,则需要添加#include <string>

当我运行它时,它会编译并完成输出。

#include <iostream>
#include <string>

int main() {

    std::string word;

    std::cout << "Enter a word to reverse chars: ";
    std::getline(std::cin, word); //Hello

    for (int i = word.length() - 1; i != -1; i--) {
        //Without - 1 " olleh"
        //With    - 1 "olleh"
        std::cout << word[i];
    }
    std::cout << std::endl;
    system("pause");
    return 0;
}

答案 2 :(得分:1)

使用以下代码。我修改了您的代码,使其适用于您的目的。 :)

#include <iostream>
#include <string>
using namespace std;

int main() {
    string word;

    cout << "Enter a word to reverse characters: " << endl;
    getline(cin, word);

    for(int i = word.length() - 1; i != -1; i--) {
        cout << word[i];
    }

    printf("\n");

    system("pause");

    return 0;
}