11

在成为 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);

当我踏上这条线时,我输入一个单词并按回车键。然后跨过去。在我这样做之后,什么也没有发生;所有的 step over、in 等按钮都被禁用。我无法继续循环,或运行其余代码。

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

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

4

3 回答 3

11

我已经复制了这个问题 - 在我看来,当调试换行符被 IDE 吞下并且没有传递回程序时,我看起来就像这样。我已经向 JetBrains 提交了一个错误。除了退出 IDE 并直接使用 GDB 或其他 IDE 进行调试之外,我没有找到解决此问题的方法。


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

最有价值的变化是:

  • 调试器不再挂在“cin >>”运算符上。
于 2014-11-14T23:40:39.417 回答
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;
}
于 2014-11-12T22:28:28.360 回答
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;
}
于 2014-11-14T05:39:16.023 回答