我的程序因为检测到问题而停止工作?

时间:2015-02-27 05:56:18

标签: c++ string

我试着看看人们在这条线上遇到的其他问题,但我无法将它们与我的计划联系起来。这可能很简单,但我很少做任何与C ++相关的事情,所以我很困惑。我尝试运行我的程序,直到我尝试使用" std :: cout"显示反转的名称。程序在命令窗口中运行了一段时间,但最终会弹出一个窗口窗口,宣告出现问题并且它将结束程序。我试图打破一切,以便它很简单,因为它可能我不能为我的生活找到错误。有人可以帮忙吗?对于我事先做错的任何事情我道歉并为绕过问题而道歉#39标题过滤器。干杯!

#include <iostream>

#include <string.h>


std::string firstName;
std::string lastName;
std::string fullname;
std::string reverseName;
int x;
int Simplifier;
int willThisWork;

int main()
{
    std::cout << "Welcome to this random program that serves \n";
    std::cout << "           NO PURPOSE!                     \n";
    std::cout << "That being said, what is your first name? : ";
    std::cin >> firstName;
    std::cin.ignore();
    std::cout << "Okay... Now what is your last name? : ";
    std::cin >> lastName;
    std::cin.ignore();

    fullname = firstName + " " + lastName;
    std::cout << "Your full name is : " << fullname;

    nameLength = fullname.length();
    for(x = 0; x <= nameLength; x++)
    {
        Simplifier = nameLength - x;
        reverseName[x] = fullname[Simplifier];
    }
    std::cout << "Reversed name : " << reverseName;
    return 0;
}

1 个答案:

答案 0 :(得分:2)

您必须包含<string>(C ++标头)而不是<string.h>(C标头)。

nameLength未声明 - 必须为int nameLength

最后,

Simplifier = nameLength - x;
reverseName[x] = fullname[Simplifier];

尝试x==0访问fullname的最后一个元素之后的那个。请记住,索引从0N-1,其中N是数组/向量/字符串中元素的数量。

修改:您必须调整for循环:x < nameLength而不是x <= nameLength

reverseName是一个空字符串,但您尝试使用reverseName[x]访问其元素。请改用reverseName.push_back()reverseName +=

也许添加奇数\n来格式化输出。