我使用C++创建了该程序,该程序要求用户使用大小写字母输入电影标题。它确定并显示标题中的大写和小写字母的数量。然后它创建3个字符串,将原件中的所有字符都转换为大写,然后转换为小写,然后转换为相反的情况。它分开显示这些字符串。显示大写和小写字母的数量后出现问题。该程序输出一条错误消息,指出它必须请求运行时以不寻常的方式终止它。我需要一些帮助来确定问题并修复它。由于 这里是我的代码:由C++字符串程序导致的运行时错误
#include <cstdlib>
#include <iostream>
#include <string>
#include <cctype>
using namespace std;
int main(int argc, char *argv[])
{
string title, upper, lower, swap;
int upCount = 0, lowCount = 0;
cout << "Please enter your favorite movie title:\n(it should have upper and lowercase letters)" << endl;
getline(cin, title);
for (int i = 0; i < title.size(); i++)
{
if (isupper(title.at(i)))
upCount++;
else if (isalpha(title.at(i)))
lowCount++;
}
cout << title << " has " << upCount << " uppercase letters and " << lowCount << " lowercase letters." << endl;
for (int i = 0; i < title.size(); i++)
{
upper.at(i) = title.at(i);
lower.at(i) = title.at(i);
swap.at(i) = title.at(i);
}
for (int i = 0; i < title.size(); i++)
{
if (isupper(title.at(i)))
swap.at(i) = tolower(int(swap.at(i)));
else
swap.at(i) = toupper(int(swap.at(i)));
upper.at(i) = toupper(int(upper.at(i)));
lower.at(i) = tolower(int(lower.at(i)));
}
cout << upper << endl
<< lower << endl
<< swap << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
你做了什么调试代码?它失败了什么? – jmarkmurphy
@jmarkmurphy它似乎在第二个循环之后的任何地方都失败了。我不知道任何方式来调试,就像我通常会因为它在运行时崩溃。 – CZou48
你有权访问源代码调试器吗?如果不是的话,你可以输出简单的消息到日志文件或控制台,比如“我到了这里”,甚至可能为该位置提供一些重要的变量值。这可能需要几次迭代,但是您可以缩小故障位置。 – jmarkmurphy