Я написал некоторый код о массивах и строках, с которым мне неудобно работать (я новичок). Эта ошибка - проблема времени выполнения, так как компилятор не кричал на меня, когда эта программа компилировалась. Я полностью застрял в этом, и не знаю, почему это произошло.
# include<iostream>
# include<cstdio>
# include<cstring>
# include<string>
using namespace std;
int main() {
char in[100];
gets(in);
int len = strlen(in);
std::string s(in);
int count = 0;
for (int i = 0; i < len; i++) {
if (s.at(i) == ' ') {
count += 1;
}
}
int i = 0;
char rec[100];
for (int j = 0; j < len; j++) {
if (s.at(j + 1) != ' ') {
i += 1;
rec[i] = s.at(j);
} else {
i += 1;
rec[i] = s.at(j);
}
}
for (int m = 0; m < i; m++) {
cout << rec[m];
}
//cout << count;
}
Предположим, пользовательский ввод "Hello World" (без кавычек). Он должен был вернуть «Hello», но вместо этого получил сообщение об ошибке:
terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::at
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
и последовало всплывающее сообщение для команды Microsoft.