错误 在测试.exe 0x76C9FD62时出现未经处理的异常:Microsoft C++异常:内存位置0x006FF8

Error Unhandled exception at 0x76C9FD62 in test.exe: Microsoft C++ exception: std::out_of_range at memory location 0x006FF870. occurred

本文关键字:异常 Microsoft C++ 0x006FF8 位置 内存 处理 exe 测试 0x76C9FD62 错误      更新时间:2023-10-16

我尝试将句子中单词的每个首字母大写。 有人可以解释为什么我在输入带有空格 ex(asdasd asdasd(的单词后会出现一些错误。

#include <iostream>
#include <cstring>
#include <vector>
#include <sstream>
#include <string>
using namespace std;
int main()
{
char str[50];
char firstLetter;
int iASCII;
vector<string> vecString;
cin.getline(str, 100);
stringstream ss(str);
string sIndivWords;
char cSpace = ' ';
while (getline(ss, sIndivWords, cSpace))
{
vecString.push_back(sIndivWords);
}
iASCII = vecString[0].at(0);
if (iASCII >= 97 && iASCII <= 122)
{
for (int i = 0; i < vecString.size(); i++)
{
firstLetter = vecString[i].at(0);
putchar(toupper(firstLetter));
for (int j = 1; j < 20;j++)
{
cout << vecString[i].at(j);
}
}
}

}

正如其他人在他们的评论中所说,您的(非(幻数20是问题所在,在这里:

for (int j = 1; j < 20;j++) {
cout << vecString[i].at(j);
}

vecString[i]少于 20 个字符时,这将崩溃!

尝试使用更合适的内容,例如:

for (int j = 1; j < vecString[i].length(); j++) {
cout << vecString[i].at(j);
}

作为旁注,您尝试使用vecString.size()将失败,因为这会为您提供单独字符串的数量,而不是任何一个字符串的长度。