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