C++ C+中的优化整数和字符串输入+;

C++ C+中的优化整数和字符串输入+;,c++,input,C++,Input,在这段代码中,我试图输入一个数字和一个字符串t次,但它在第二次迭代中给出了一个运行时错误 输入: 2 2 6 10 11 运行时错误时间:0内存:3436信号:11 2 6 6 请帮助我删除此错误。 我对整数和字符串输入都使用了优化输入 #include <iostream> #include <cstdio> #include <string> using namespace std; inline int getint(){ int

在这段代码中,我试图输入一个数字和一个字符串
t
次,但它在第二次迭代中给出了一个运行时错误

输入:

2
2 6
10 11
运行时错误时间:0内存:3436信号:11

  2 6 6
请帮助我删除此错误。 我对整数和字符串输入都使用了优化输入

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


inline int getint(){
    int num=0;
    char c=getchar_unlocked();
    while(!(c>='0' && c<='9'))
        c=getchar_unlocked();

    while(c>='0' && c<='9'){
        num=(num<<3)+(num<<1)+(c-'0');
        c=getchar_unlocked();
    }
    return num;
}

inline void read_string(char *str){
    char c = 0;
    int i = 0;

    while(!(c>='0' && c<='9'))
        c=getchar_unlocked();

    while (c != '\n'){
        str[i] = c;
        c = getchar_unlocked();
        i = i + 1;
    }
    str[i] = '\0';
}

int main() {
    int t,A,i,j;
    char b[255];
    scanf("%d",&t);

    while(t--){
        A = getint();
        cout<<A<<" ";
        read_string(b);
        string B(b);
        cout<<b<<" "<<B<<endl;
    }

    return 0;
}
#包括
#包括
#包括
使用名称空间std;
内联int getint(){
int num=0;
char c=getchar_unlocked();

而!(c>='0'&&c='0'&&cHave您是否尝试过使用调试器?它到底在哪一行中断?触发错误的输入是什么?您是否需要这两种输入类型?到目前为止,您是否尝试过什么?您到底想从输入中读取什么?@Ulrich是的,错误在第二次迭代中读取字符串时出现,但在第一次iter中仍在工作我需要两种输入类型,这是一个问题的一部分。我试着用scanf表示int,但情况仍然是一样的,但如果我用scanf表示string,一切都很好input@user2548635我想在每次迭代中读取一个整数和一个由空格分隔的字符串,每次迭代的值都在不同的行中,这一点非常明显是因为您没有任何保护措施来阻止您在分配的缓冲区之外进行写入。顺便问一下:255的原因是什么?为什么不是312?或者187?只是它的幂次小于2或1并不能使您的程序正确。这只是需要考虑的问题,确切的缓冲区大小在这里不是您的问题。