输入多组字符串 方法getline()与vector
来源:互联网 发布:java绝对路径 编辑:程序博客网 时间:2024/04/30 09:07
方法一:
利用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;
}
- 输入多组字符串 方法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()
- 文件系统名词记忆
- 记录2--u-boot 1.1.6 start.S
- quartz集成spring下的集群配置
- 简述301重定向的优势
- 你在为谁打工呢?
- 输入多组字符串 方法getline()与vector
- Linux-清除root密码
- Hessian 原理分析
- 开博第一篇
- 移动端兼容性浅析
- 配置IIS服务器
- 王丽坤:蓝炬星集成灶让厨房更清洁
- 程序员的级别
- 段寄存器历史来源