c++ - 字符串错误向量
问题描述
以下代码中有一个我没有得到的错误,我尝试调试但没有用。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
int n;
string s ;
cin>>s;
vector<string> v ;
for (int i=0;i<s.size()-1;i+=2)
{
v[i]=s.substr(i,2);
}
}
解决方案
有几个问题:
- 缺失
#include <vector>
- 在某些编译器上,没有它它可能会工作。 - 向量的大小为零,因此 operator[] 导致分段错误
-1
不需要循环内- 即使向量的大小没问题,
i
也不需要索引,因为它会增加 2,因此您正在跳过元素。
所以它应该是这样的:
for (size_t i=0; i<s.size(); i+=2)
{
v.push_back(s.substr(i,2));
}
推荐阅读
- java - 是否可以使用 Android Studio 将 Kotlin 转换为 Java?
- r - 未能将数据框导出为 CSV
- c# - 以编程方式创建拉取请求并添加审阅者、工作项
- git - 如何使 git 分支的最新代码与另一个分支相同?
- ionic-framework - Ionic:我可以打开我的模拟器,但无法在上面启动我的应用程序
- javascript - JS嵌套原型访问父节点
- python - 我无法在 python 中替换 \xe2\x97\x8f
- angular - 缓存可重用 Angular 组件的图像/gif
- php - mpdf 仅应用某些样式
- java - 监视具有事务方法的服务弹簧