C++和C语言在OJ中的格式控制
一、C++中读取一行
getline函数
读取一行字符(字符串间有空格,不能直接cin >> string)
使用 getline(cin, str, '结束符')
其中,
str为std::string类型(注意,不能是char a[]这样的数组,必须是string!!),可包含空格;
结束符代表每行的终止标志(读到哪个字符停止),一般默认为回车符’\n’。如果默认,则可使用getline(cin, str)
简化输入。
istream& getline (istream& is, string& str, char delim);
具体在多组输入输出中这么使用
string str; while( getline(cin, str) ) { getchar();//记得要吸收掉'\n'符号!!!! } 或者 while( getline(cin,str,' ') ) { getchar(); }
二、c语言scanf读取一行
c语言的scanf函数可以使用%s来读取一个字符串,但是遇到空格就不会读取后面的内容了。如果需要读取一整行的字符肯定就有问题了。
经过一阵google找到了解决方法,记录下。
就是在scanf中使用%[ ]参数。这个参数的作用就是读取一个字符集合。中括号里面输入读取的字符集合。比如%[a-z]读取a到z的字符集合。要读取一行只要,
只要设置为读取非换行符就可以了既%[^\n]。
char str[1024]; scanf("%[^\n]" , str )
三、C语言中fgets的使用
参见传送门
char * fgets ( char * str, int num, FILE * stream );
使用方法,有点类似gets
char buf[256]; //注意后面的stdin while(NULL!=fgets(buf,256,stdin)) { }