程序旨在用户输入一个字符串,例如" TheDogIsHappy"然后显示带有大写单词之间空格的字符串。 只有两个单词,程序运行正常,但当字符串中有更多单词时: 程序运行时收到此错误: 在抛出' std :: out_of_range'的实例后终止调用 what():basic_string :: insert 没有看到字符串超出其边界的任何点,因为它只循环到字符串长度,所以不知道为什么超出范围错误。
#include <cstdlib>
#include <iostream>
#include <string>
#include <cctype>
#include <stdio.h>
#include <ctype.h>
using namespace std;
int main(int argc, char *argv[])
{
string string1 = "";
string string2 = "";
int n;
double length1;
cout << "Enter String: " << endl;
cin >> string1;
n = 1;
length1 = string1.length();
for (int i = 0; i <= string1.length();i++) {
if (isupper(string1[n])) {
string1.insert(n," ");
n = n + 1;
}
n = n + 1;
}
cout << "String is: ";
n = 0;
for (int i = 0; i <= string1.length();i++) {
cout << string1[n];
n = n + 1;
}
cout << endl;
cout << "Press the enter key to continue ...";
string s;
cin >> s;
return EXIT_SUCCESS;
}
答案 0 :(得分:0)
您需要使用< string1.length()
因为索引从0开始,所以实际长度的值不是字符串中的有效索引。
答案 1 :(得分:0)
如果您尝试访问string
处的length
,则会超出范围。就像在array[5]
访问大小为5的数组一样。最后一个点是array[4]
。