可能有很多萌新尝试做一个可以存多个string类型字符串的程序,就是用了数组。运行一看,效果并不是想象的那样。
例如下面这个片段:
#include <include>
#include <string>
using namespace std;
string a[500];
int main()
{
for (int i = 1; i <= 500; i++)
{
cin >> a[i];
}
for (int i = 1; i <= 500; i++)
{
cout << a[i] << "\n";
}
return 0;
}
这样会发生什么?你根本无法输出正确的500个字符串!举个例子:你输入a[1]时输入的是Hello~,a[2]输入的是Yes,但输出的却是l。因为a[n]查询的是这个字符串的第n+1个字符(因为下标从0开始),输出默认的是a[1]的第3个字符
讲了那么多,我们应该怎么解决呢?
这就要请出我们的vector了
头文件:<vector>
我们可以用这个代码创建string类型的vector数组:
vector<string> a; //a是数组名称,可自行取名
然后我们可以用一个for循环输入字符串到这个数组中
for (int i = 1; i <= 50; i++) //50数值可更改
{
string l; //创建一个临时存储区
cin >> l;
a.push_back(l); //将l中的内容移交给a数组
}
随后我们再通过for循环输出,问题就解决了!
(注:Visual Studio好像不能用,运行会出现未知错误)
完整代码:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
vector<string> a;
int main()
{
for (int i = 1; i <= 50; i++)
{
string l;
cin >> l;
a.push_back(l);
}
for (int i = 0; i < a.size(); i++)
{
cout << a[i] << "\n";
}
return 0;
}
好啦,想要学习到更多C++知识,别忘记关注我哟~