如果给定的字符串包含“ 不”或“ 不”,我想编写一个打印 Real Fancy 的程序strong>”和 通常看中的 (如果其中不含)。
例如:“这不是字符串” o / p:真正的幻想
“这没什么” o / p:定期看中
问题是,如果我的第一个测试用例输入是“ 不是是此行”,它将打印Real Fancy。但是,如果在第二个或以上的测试用例中使用相同的行作为输入,则该行将无法正常工作并定期打印。有帮助吗?
代码如下:
export function pointReducer(state: 1, action: EnthusiasmAction) {
switch (action.type) {
case INCREMENT_ENTHUSIASM:
return state + 1;
case DECREMENT_ENTHUSIASM:
return Math.max(1, state - 1);
case GAME_TICK:
return state + 1;
default:
return state;
}
}
答案 0 :(得分:0)
输入模式如下
t
quote
quote
quote
...
阅读t
cin>>t;
一旦找到可能不是整数的输入,就会停止。这包括表示行尾的换行符,并将换行符留在流中以供以后使用(有关该问题的更多信息,请参见Why does std::getline() skip input after a formatted extraction?)。跳过问题已通过
解决cin.ignore();
getline(cin,quote);
在while
循环中,但这将一个错误换成了另一个。如果没有先前格式化的输入以在流中保留不需要的字符,则cin.ignore();
将抛出输入的合法第一个字符。
这将在第二次及其后的读取中发生。输入将看起来像
t //newline consumed by ignore
quote //newline consumed by getline. ignore consumes first character of next line
uote //newline consumed by getline. ignore consumes first character of next line
uote //newline consumed by getline. ignore consumes first character of next line
..
将其移动到输入之后,将不需要的字符留在流中
cin>>t;
cin.ignore();
一个更好的选择是ignore
,这样您就可以确定在行尾摆脱了所有潜在的垃圾
cin>>t;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
这将从流中读取直到流的最大可能长度,或者找到并丢弃换行符,以先到者为准。
总是在手术后而不是下一次清理。它将相关的代码紧密地结合在一起,以提高可读性,并保护您免受之前没有清理的情况的侵害。