Я столкнулся с проблемой с ошибкой на C++. Вот код:C++: выражение: строковый индекс вне диапазона
ошибки как: Expression: строка индекса вне диапазона
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <string>
void removeAllchars1(std::string s)
{
int len = strlen(s.c_str());
std::string b;
int len2 = strlen(b.c_str());
for(int i = 0; i < len; ++i)
{
if(isdigit(*(s.c_str()+i)))
{
b[len2]=s[i];
++len2;
}
}
std::cout <<"\nAfter removeAllchars1 function is:"<< *(b.c_str());
}
Хм ... вы тоже покажете нам код? Кроме того, сообщения, содержащие «asap» вместо вопроса, как правило, закрываются и закрываются. – Hulk
'b [len2]' всегда обращается к концу строки. Кроме того, просто используйте 's.size()'. – BoBTFish
Привет, Томек. void removeAllchars1 (std :: string s) { \t int len = strlen (s.c_str()); \t std :: string b; \t int len2 = strlen (b.c_str()); \t для (INT I = 0; я <длина; ++ я) \t { \t \t, если (isdigit (* (s.c_str() + I))) \t \t { \t \t \t Ь + = с [I]; \t \t} \t} \t станд :: соиЬ << "Функция \ Nafter removeAllchars1 является:" << * (b.c_str()); } int _tmain (int argc, _TCHAR * argv []) { \t char * str = "hoc_r123"; \t removeAllchars1 (str); \t возвращение 0; } –