У меня возникли проблемы с этим экзаменационным вопросом, который я не могу записать, Visual C++ 2010 продолжает говорить мне: «Выражение: строковый индекс вне диапазона». Я решил, что я выполняю цикл длиннее, чем длина «inStringP.length()», поэтому я добавил & вычитал 1 или 2 из целого числа в условном тесте for loop, но это не приводит к успеху. Google не чувствует свой обычный гений себя сегодня либо .....Строковый индекс вне диапазона (C++)
#include <iostream>
#include <cstdlib>
#include <string>
#include "stdAfx.h"
using namespace std;
string removeChar(string inStringP){
string temp;
for(int i=0;i<inStringP.length()-1;i++){
if(inStringP[i]!='p'){
temp[i]=inStringP[i];
}
}
return temp;
}
int main(){
string sample = "Peter picks a peck of pickled peppers";
cout<<removeChar(sample)<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Я не знаю, почему это было downvoted? Строковой temp нужно дать некоторый размер, если вы обращаетесь к нему через элемент или компилятор не знает, как это сделать. Когда вы говорите, что temp [i] = inStringP [i], temp [i] может оказаться вне границ? – FreudianSlip
Спасибо всем за отличные ответы, но я должен пойти с «temp.resize ....», работал в первый раз, снова спасибо и проклял БЫСТРОГО ответа! – 420kscott