C++ 我的程序在到达'cin.getline()'函数时突然退出

C++ 我的程序在到达'cin.getline()'函数时突然退出,c++,function,g++,getline,cstdio,C++,Function,G++,Getline,Cstdio,我使用getline()函数编写了一个程序 我认为问题在于这一部分: int encrypt(){ int opt,limit; char inp[100],enc[100]; cout<<"Choose the encryption type\n" <<"[1]Simple\n" <<"[2]complex\n" <<">>>"; cin

我使用
getline()
函数编写了一个程序

我认为问题在于这一部分:

    int encrypt(){
    int opt,limit;
    char inp[100],enc[100];
     cout<<"Choose the encryption type\n"
        <<"[1]Simple\n"
        <<"[2]complex\n"
        <<">>>";
    cin>>opt;
    if(opt==1){
    cout<<"Enter string to be encrypted :";
    cin.getline(inp,100);
    limit=strlen(inp);
    for(int i=0;i<limit;i++)
        {
        switch(inp[i])
                {
                case 'a' :  enc[i]='q';
                            cout<<enc[i];
                            break;

                ..........
int-encrypt(){
int opt,限制;
char-inp[100],enc[100];
coutcin.ignore()在cin>>opt之后,应该完成这项工作(快速修复)。@Algirdas引用了一个链接,提供了更多详细信息,这是因为由于opt的输入,您在流中得到了换行符

int encrypt(){
int opt,limit;
char inp[100],enc[100];
 cout<<"Choose the encryption type\n"
    <<"[1]Simple\n"
    <<"[2]complex\n"
    <<">>>";
cin>>opt;
if(opt==1){
cout<<"Enter string to be encryped :";
cin.ingore() #this can help in clearing the '/n' in stream
cin.getline(inp,100);
limit=strlen(inp);
for(int i=0;i<limit;i++)
    {
    switch(inp[i])
            {
            case 'a' :  enc[i]='q';
                        cout<<enc[i];
                        break;

            ..........
int-encrypt(){
int opt,限制;
char-inp[100],enc[100];

cout please..1)“它打印要加密的输入字符串,然后突然退出:p”“你是如何知道它在这条线上退出的?你是否用调试器跳过了代码,以验证?2)问题可能与:但不可能确定没有。附录:考虑使用<代码> STD::String < /C> >而不是<代码> char < /Cord>数组。为什么这很重要:<代码> CIN。GETLIN(InP,100);
不会溢出,100可以确保这一点(但要避免),但是如果is读取了100个字符而没有找到换行符,
cin
将处于失败状态并变得无法读取。这不会被检查或纠正。