输入多组字符串 方法getline()与vector
来源:互联网 发布:c语言静态变量 编辑:程序博客网 时间:2024/05/18 03:46
方法一:
利用getline()函数
getline函数对空白符的处理:不忽略空白符,即把空白符也当成元素存储到string对象中,读取字符一直到换行符(回车),读取终止且丢弃换行符(换行符从输入流中丢去且不保存在string对象中)
cin函数对空白符的处理:读取并忽略非空白符之前所有的空白字符,直到再次遇到空白符,读取终止(该空白符仍留在输入流中)
这里是每次输入时对象都是string对象。也即是输入一组就要去操作一组(要回车代表重新输入到输入流中)
#include <iostream>#include <string>#include <vector>using namespace std;int main(){string str;while(getline(cin,str)){ // operate cout<<str.size();}return 0;}
------------
转:
分析:注意这里默认回车符停止读入,按Ctrl+Z或键入EOF回车即可退出循环。
在这个语句中,首先getline从标准输入设备上读入字符,然后返回给输入流cin,
注意了,是cin,所以while判断语句的真实判断对象是cin,也就是判断当前是否存在有效的输入流。在这种情况下,我想只要你的电脑不中毒不发神经你的输入流怎么会没有效?所以这种情况下不管你怎么输入都跳不出循环,因为你的输入流有效,跳不出循环。
然而有些同学误以为while判断语句的判断对象是line(也就是line是否为空),然后想通过直接回车(即输入一个空的line)跳出循环,却发现怎么也跳不出循环。这是因为你的回车只会终止getline()函数的读入操作。getline()函数终止后又进行while()判断(即判断输入流是否有效,你的输入流当然有效,满足条件),所以又运行getline()函数,此时str中已经清空了
方法二:
利用vector
#include <iostream>#include <string>#include <vector>#include <algorithm>using namespace std;int main(){ string str;int n;cin>>n;vector<string> vec;for (int i=0;i!=n;i++){ cin>>str;vec.push_back(str);}for (int j=0;j!=n;j++){reverse(vec[j].begin(),vec[j].end()); //vec[i]在string中是该字符串的对象,也是首地址} for (int j=0;j!=n;j++){ cout<<&vec[j]<<endl; //元素首地址的地址cout<<vec[j]<<endl;cout<<*(vec[j])<<endl; //出错,不能取得第一个元素 cout<<vec[j][0]<<endl; //相当于str[i] 数组的某一个元素 }system("pause");return 0;}
阅读全文
0 0
- 输入多组字符串 方法getline()与vector
- 输入多组字符串 方法getline()与vector
- 字符串输入 getline
- std::getline从输入流中读取多行字符串
- C++ 用getline输入字符串(小程序)
- 字符串输入方式总结(cin cin.get()cin.getline() getline())
- 字符串输入函数scanf,cin,cin.getline,gets,getline
- getline() vector
- nyoj+字符串一行输入getline的使用
- C++ 里面get和getline输入方法
- 标准库类型(string,getline,vector)
- Uva400 [vector与字符串]
- C++字符串的输入函数之get()和getline()
- c++中输入字符串--cin.get和cin.getline用法
- cin.getline()与getline()
- cin.getline()与getline()
- cin.getline()与getline()
- cin.getline()与getline()
- tomcat7绿色版服务配置
- 运输计划NOIP2015Day2T3
- AsyncTask —— Android 原生异步通信简析
- 面试准备三
- 信号与槽的连接方式
- 输入多组字符串 方法getline()与vector
- ssm框架下的SpringMVC上传文件的三种方式
- 用户画像-如何设计
- linux文件系统之mount流程分析
- Android之设置横屏竖屏
- HDU 6184 求三元环
- Android Studio检查不到真机
- Maven
- iOS开发稀碎小技巧二