调试断言失败 - MSVCP110D.dll

时间:2013-06-09 16:51:51

标签: visual-studio visual-c++

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

int main()
{
    string token = "000000:::AAAA:::000011:::Hello 8:::::::D Jay!";
    string * stringArray = new string[token.size()]; 
    string interim;
    int r = 0;
    int arrayCounter = 0;

    for(int x = 0; x < token.length(); x++)
    {
        if(token[x] != ':')
        {

            interim[r] = token[x];
            r++;
        }
    }

    for (int x = 0; x < r; x++)
    {
        cout << interim[x] << endl;

    }

    system("pause");
    return 0;
}

我是新人并且正在学习,并将其缩小到了界限:

            interim[r] = token[x];

..但我不知道为什么会崩溃。建议吗?我在Visual C ++ VSE2012编码

1 个答案:

答案 0 :(得分:1)

字符串interim的大小为零。设置interim[r] = token[x]会修改位置r的字符串,而不会更改其大小。如果大小为零,则这是未定义的行为。

interim += token[x]可能就是你想要的。

示例:

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string token = "000000:::AAAA:::000011:::Hello 8:::::::D Jay!";
    string interim;

    for(int x = 0; x < token.length(); x++)
    {
        if(token[x] != ':')
        {
            interim += token[x];
        }
    }

    cout << interim << endl;

    system("pause");
    return 0;
}

输出:

000000AAAA000011Hello 8D Jay!
Press any key to continue . . .