在抛出'std :: length_error'的实例后调用终止what():basic_string :: _ S_create

时间:2013-03-29 11:22:37

标签: c++ exception runtime mingw

我有下面给出的数据类型

typedef struct {
    string t;
    string r;
    string c;
    string val;
} cellProperty;

class Fl_Input__: public Fl_Input {
    public:
        explicit Fl_Input__ (int x, int y, int w, int h) : Fl_Input(x,y,w,h) {}
        cellProperty getProperty() { return ownProperty; }
        void setProperty(string t,string r,string c, string val);
    private:
        cellProperty ownProperty;
};

我正在通过for循环绘制GUI。每个文本输入框都是Fl_Input__的二维数组的成员。一切顺利,直到循环到达点r=4 & c=7并抛出异常

  

在抛出'std :: length_error'

的实例后终止调用      

what():basic_string :: _ S_create`

代码在linux下编译并运行正常,我为win32(mingw)重新编译但是遇到了这个运行时问题。代码在我调用setProperty()

的地方失败
Fl_Box *tab2ColLabelBox[COLNUM];
Fl_Box *tab2RowLabelBox[ROWNUM];
int t = 1;

for (int r=0 ; r < (ROWNUM + 1) ; r++)
    for (int c=0 ; c < COLNUM ; c++)
    {
        stringstream ss_t, ss_r, ss_c;
        int i_v;

        ss_t << t;
        ss_r << (r-1);
        ss_c << c;

        valueString = readSettings(ss_t.str(), ss_r.str(), ss_c.str());
        SplitString(valueString, v, ",");
        stringstream(v.at(0)) >> i_v;

        tab2OffsetInput[r][c] = new Fl_Input__(
                (CELLWIDTH) * (c+2) + ((c+1) * SIDESPACE) - TXTINWIDTH,
                (r+3) * CELLHEIGHT,
                TXTINWIDTH,
                CELLHEIGHT);
        tab2OffsetInput[r][c]->align(
                FL_ALIGN_LEFT + FL_ALIGN_INSIDE + FL_ALIGN_TOP);
        tab2OffsetInput[r][c]->value(v.at(1).c_str());
        tab2OffsetInput[r]c]->setProperty(
                std::string("1"), ss_r.str(), ss_c.str(), v.at(1));
        tab2OffsetInput[r][c]->maximum_size(3);
        tab2OffsetInput[r][c]->callback(
                callback_modSettings_tab1_txtInput, this);
        v.clear();
    }

任何指导都将不胜感激! 提前谢谢......

0 个答案:

没有答案