C++ C++;getline无法获取输入

C++ C++;getline无法获取输入,c++,C++,我试着读一个句子来解读,但是有些地方出了问题。当我不输入任何字符时,它会打印出“句子是”和“解码的句子是”,但当我输入一个或多个字符时,它只会坐在那里,什么也不做。我认为MySentence类不会出错,因为它甚至没有打印“句子是” #包括 #包括 #包括“mycentence.h” #包括“Corpus.h” #包括 使用名称空间std; int main(){ 科珀斯公司; std::cout如n.m.所建议,尝试在行的末尾添加一个endl 键入字符后按enter键了吗?是的,它只是转到一个新

我试着读一个句子来解读,但是有些地方出了问题。当我不输入任何字符时,它会打印出“句子是”和“解码的句子是”,但当我输入一个或多个字符时,它只会坐在那里,什么也不做。我认为MySentence类不会出错,因为它甚至没有打印“句子是”

#包括
#包括
#包括“mycentence.h”
#包括“Corpus.h”
#包括
使用名称空间std;
int main(){
科珀斯公司;

std::cout如n.m.所建议,尝试在行的末尾添加一个endl


键入字符后按enter键了吗?是的,它只是转到一个新行。试试这个:
cout As@n.m。意思是说,它有助于在执行可能挂起的语句之前刷新输出。好吧,这有点奏效。它打印“句子是”加上我输入的任何内容,但在那里停止。它永远不会到达“解码句子…”您是否尝试过使用调试器(例如gdb)逐步检查代码并查看其挂起的位置?
#include <iostream>
#include <stdio.h>
#include "MySentence.h"
#include "Corpus.h"
#include <string>
using namespace std;

int main() {
    Corpus corp;
    std::cout << "The proportions are: ";
    for(int i = 0; i<26; i++) {
            cout << corp.proportion(i+97) <<", ";
    }
    cout << endl;
    cout << "Enter sentence terminated by <ENTER> ";

    string s= "";
    getline(cin, s);
    cout << "The sentence is " << s;
    MySentence sent(s);
    sent.decode(corp);
    cout << endl << "Deoded sentence is: " << sent.sentence;
    return 0;
}