一、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))
{
}