直接上一个示例代码,是往一个空的vector ivec中添加元素然后输出的代码。
#include<iostream>
#include<string>
#include<vector>
using namespace std;
/*int main()
{
vector<int> ivec;
for(int i = 0;i<=100;i++)
{
ivec.push_back(i);
cout<<ivec[i]<<" ";
}
system("pause");
return 0;
}*/
int main()
{
vector<string> ivec;
string word;
while (cin>>word)
{
ivec.push_back(word);
if(cin.get()=='\n')
break;
}
int i = 0;
while (i<ivec.size())
{
cout<<ivec[i]<<" ";
i++;
}
system("pause");
return 0;
}
可以看到,当想用回车结束时,和c语言中的getchar()函数很相似,c++用cin.get()来获取我们想干的坏事,就比如例子中遇到回车('\n)结束程序。
while(cin>>word)
{
if(cin.get()=='\n')//如果输入流得到了回车
break;
}
特别说明,c++中的vector一般都不设置大小边界的,也就是以空为开始情况的情况很常见。
对了,还发现个好玩的,当我们用int类型的vector存储一堆数据时,会自动过滤掉其中的非int类型数据,这可以用于那些从一堆数据中去除字母之类的题目吧或许~
#include<iostream>
#include<string>
#include<vector>
using namespace std;
/*int main()
{
vector<int> ivec;
for(int i = 0;i<=100;i++)
{
ivec.push_back(i);
cout<<ivec[i]<<" ";
}
system("pause");
return 0;
}*/
int main()
{
vector<int> ivec;
int word;
while (cin>>word)
{
ivec.push_back(word);
if(cin.get()=='\n')
break;
}
int i = 0;
while (i<ivec.size())
{
cout<<ivec[i]<<" ";
i++;
}
system("pause");
return 0;
}
然鹅我测试了一下,存在问题。它会在遇到第一个非法字符后直接退出。。。但愿这个小tip以后有地方用的上吧!
PS:转载注明出处,如有侵权请联系作者删除。