对于C/C++中字符串,不论是输入和输出和一些基本的操作都是非常麻烦,细节特别多,学习字符串的过程中,我们首要解决的问题就是结局最基本的输入和输出问题。只有传入数据我们才能进一步对数据进行分析操作。
首先对于字符串的存在形式,是有两种类型的,一种类型是字符数组,另一种类型是string,第二种类型需要加头文件才能更好使用cstring,两者的区别,最通俗的来讲,字符数组能做的,string都能做;string能做的,字符数组不一定能做,所以请直接用string就完事!
一、其次对于字符串的输入,我建议先判断输入格式是什么,为什么这样说,我们看下各个输入:
1.cin:cin是不能读入空格的,或者说cin遇到空格就会停止,因此输入格式中没有空格,我会优先选择cin,有空格的话cin只能读取到空格之前的部分
2.getline(cin,s),比较推荐,可以读取空格,不过使用前还是建议看看输入格式
3.gets(),已经被淘汰了
4.fgets()读入一行数据,不过他会读入你最后提交按下的回车键,这会导致什么结果呢?也就是说你得到的字符串长度总是比你输入的大1,这就可烦人,你只能在跑for循环遍历的时候将最后的换行符给过滤掉,很不建议这个
结论:所以先判断输入格式有没有空格,有getline,没有cin
二、我们看下输出,输出主要是cout与puts,cout大家都很熟悉了,下面来介绍一个puts
puts函数:属于C语言范畴,但是C++也可以使用,是一个只能输出字符串的函数,但是puts可以输出空格,这个它他的一个特性。不过我用puts输出拼接的字符串是经常报错
相比较来说,cout的功能非常的给力啊,我比较推荐输出用cout,对于网上说的cout的不能输出空格,我实验的结果并不是这样,cout是可以输出空格的
总结:省流大师:首先表示用string,其次输入判断首先输入格式,有空格用getline没有用cin,最后说出用cout
真的是困扰我好长时间了,用fgets函数输入一直给我出问题,用puts输出也是一直有问题,不吐不快



