2017-05-08 46 views
-3

我每次尝试运行程序时都会收到此错误。为什么我会收到此错误讯息? C++

此应用程序已请求运行时以不寻常的方式终止它。 有关更多信息,请联系应用程序的支持团队。 终止投掷

实例以后有什么()被称为 '的std :: logic_error':basic_string的:: _ M_construct空无效

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

struct Bin 
{ 
    string desc; 
    int partsQty; 
}; 

void addParts(Bin bList[], int i); 
void removeParts(Bin bList[], int i); 
int main() { 
    char response; 
    int binNumber; 
    const int NUM_OF_BINS = 11; 
    Bin binList[NUM_OF_BINS] = { 
    {0,0}, 
    {"Valve", 10}, 
    {"Earing",5}, 
    {"Bushing",15}, 
    {"Coupling",21}, 
    {"Flange",7}, 
    {"Gear",5}, 
    {"Gear Housing",5}, 
    {"Vaccum Gripper",25}, 
    {"Cable",18}, 
    {"Rod",12} 
    }; 
for(int i=1;i < 11;i++) 
{ 
    cout << "Bin #" << i << " Part: " << binList[i].desc << " Quantity " << binList[i].partsQty << endl; 
} 
    cout << "Please select a bin or enter 0 to terminate"; 
    cin >> binNumber; 
    cout << "Would you like to add or remove parts from a certain bin?(A or R)"; 
    cin >> response; 
    if(response == 'a') 
     addParts(binList, binNumber); 
    else if(response == 'r') 
     removeParts(binList, binNumber); 
    return 0; 

} 

void addParts(Bin bList[], int i) 
{ 
    int parts; 
    int num; 
    cout << "How many parts would you like to add?"; 
    cin >> num; 
    parts = bList[i].partsQty + num; 
    cout << "Bin # " << i << " now contains " << parts << " parts"; 

} 

void removeParts(Bin bList[], int i) 
{ 
    int parts; 
    int number; 
    cout << "Which bin would you like to remove parts to?"; 
    cin >> i; 
    cout << "How many parts would you like to remove?" << endl; 
    cin >> number; 
    parts = bList[i].partsQty - number; 
    if(parts < 0) 
     cout << "Please enter a number that isn't going to make the amount of parts in the bin negative."; 
    cin >> number; 
    parts = bList[i].partsQty - number; 
    cout << "The remaining amount of parts in bin #" << i << " is " << parts; 

} 
+0

请格式化您的代码,使其可读。 –

+2

你正在用空指针初始化一个字符串。调试器会告诉你在哪里,你可以从那里找出原因。 –

+1

请修改您的标题,以便其他人使用。正如所写,它毫无用处。几乎在这个网站上的每个问题都可能是“为什么我会收到此错误消息?” –

回答

2

它来源于:

{0,0} 

在您的初始化程序列表为binList0对于std::string不是正确的初始值设定项。您也许可以使用{"", 0},或者甚至使用{}

另一个想法可能是修改您的程序逻辑,以便在阵列的开始时不需要虚设条目。

+1

非常感谢! –

相关问题