C ++输入出错了

时间:2016-04-06 07:59:37

标签: c++ algorithm input stdin

我正在解决uva问题并尝试输入一系列字符串。问题是当我尝试在While循环中输入字符串时,首先输入正常。但在那之后,每个字符串的第一个字符将被忽略。所以我使用了__fpurge()函数,效果很好。但我无法在uva Online Judge网站上使用该功能。我怎样才能替换__fpurge函数?

java -version

1 个答案:

答案 0 :(得分:2)

我认为你的问题出在__fpurge

  

用于输入流   这会丢弃从底层对象读取的任何输入,但尚未丢弃   通过getc(3)获得;

也许这可以解决你的问题。这是一种更加C ++ - 处理输入的方式。

int main()
{
    int n;
    std::cin >> n;
    // declare dict, whatever it is
    for(int i = 0; i < n; i++)
        std::cin >> dictionary[i];

    const std::size_t len = 'z'+1;
    std::array<char, len> alphabet;
    std::array<char, len> cryptchar; 

    std::string crypt_text;
    while(std::getline(std::cin, crypt_text))
    {
        std::fill(std::begin(alphabet), std::end(alphabet), 0);
        std::fill(std::begin(cryptchar), std::end(cryptchar), 0);

        if(!crypt_kicker(0,alphabet,cryptchar))
            print_asterisk();
    }
}

我不确定您是否真的需要len = 'z'+1代替len = 'z'-'a'+1'\0'不需要结束std::array