C++算法题的一些输入技巧
运行C++的终端中如何结束输入
有时候我们运行程序的时候,是以EOF结束程序,可是在终端中,输入空格,TAB和回车符都是无法结束输入的,所以这时我们使用其他方式。
- 在Windows中,输入完成后先按Enter键,再按Ctrl+Z键,最后再按Enter键即可结束输入。
- 在Linux中,输入完毕后按Ctrl+D键即可结束输入。
输入保留空格和回车
无法使用scanf("%s")
输入字符串,因为它遇到空格或TAB就会停下来,所以我们可以使用下面两种方法:
1.getchar(),如果题目是可以边读边处理的,这种是最好的方法。
int c;
while((c = getchar()) != EOF){
...
}
2.gets(),如果不满足上述条件,只能使用这种方案。
char c[8];
while(gets(c)!=NULL){
...
}
输入忽略换行符
有时候我们会碰到编码文本可以由多行组成
,这里我们可以使用"跨行读字符"的函数readchar
。
int readchar(){
for(;;){
int ch = getchar();
if(ch != '\n' && ch != '\r') return ch; // 一直读到非换行字符为止
}
}
int readint(int c){
int v = 0;
while(c--) v = v * 2 + readchar - '0';
return v;
}