c++ - 使用 getline() 输入字符串的问题

标签 c++ string

这是我对 codeforces http://codeforces.com/problemset/problem/499/B 中问题的解决方案.我在输入字符串时遇到问题。在我给它输入 str 并输出一些奇怪的字符之前,它在第 10 行之后终止(参见代码)。

Input: 4 3
       codeforces codesecrof
       contest round
       letter message
Output:




#include <iostream>
#include <cstdlib>
#include <string>

using namespace std;

int main(){
    int N, M;
    string str;

    cin>>N>>M;
    string A[M], B[M];

    for(int i=0; i<M; i++)
    cin>>A[i]>>B[i];     // line 10

    getline(cin,str);

    char res[N+1];


    for(int i=0; i<M; i++){
        int j= str.find(A[i]);
        int k;
        int x=0;

        if(B[i].length() < A[i].length()){

            for(k=j; k<B[i].length(); k++){
                res[k]= B[i][x];
                x++;
            }
        }else{
            for(k=j; k<B[i].length(); k++){
                res[k]= B[i][x];
                x++;
            }

        }

        res[k]=' ';

    }

    for(int i=0; i<=N; i++ )
        cout<<res[i];

    cout<<endl;

    return 0;
}

最佳答案

在输入流之后有一个换行符:

cin>>N>>M;

您需要一行代码来读取并丢弃该行的其余部分。添加一行;

cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

在那行之后。

添加

#include <limits>

能够使用 std::numeric_limits

关于c++ - 使用 getline() 输入字符串的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27850656/

相关文章:

c++ - 删除多态对象和内存泄漏

c++ - 如何使用 C 中的内部 C++ 类类型?

c++ - 默认模板参数的模板推导

c++ - 我在 DLL 项目 C++ 中收到 "nonstatic member reference must be relative to specific object"错误

python - 有没有办法让 vim 以 79 个字符自动包装 python 字符串?

java - 在 JAVA 中验证 JSON 字符串对象格式的最佳方法是什么

c++ - std::move 意外调用析构函数

php - 去掉不需要的标签后,我还应该对文本输入做什么?

java - Java中删除字符串数组开头的逗号

c - 如何在C中制作自己的IO功能?