Я просмотрел свой сценарий, но не могу понять, что дает мне эту ошибку. Когда я запускаю что-то вроде «10d100», скрипт вылетает без вывода результатов. В остальном скрипт работает нормально.
Кроме того, «Журнал» - это просто функция cout, которую я сделал с файлом заголовка.
int main()
{
std::string input;
std::string numD;
std::string numF;
unsigned short int numDice{};
unsigned short int numFaces{};
unsigned short int rollTotal{0};
while (1)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 11);
Log("Input your roll (ex. 4d6, 1d20)\n\n");
getline(std::cin, input);
if (input.size() == 0) {numDice = 1; numFaces = 20; break;}
if (isdigit(input[0])) {numD.push_back(input[0]); }
else { Log("Please use the format (XXdXX)\n\n"); return main();}
if (isdigit(input[1])) {numD.push_back(input[1]); numDice = std::stoi(numD); }
else if (isalpha(input[1])) { numDice = std::stoi(numD); }
if (isdigit(input[2])) {numF.push_back(input[2]); }
if (isdigit(input[3])) {numF.push_back(input[3]);}
else {numFaces = std::stoi(numF); break;}
if (isdigit(input[4])) {numF.push_back(input[4]);}
else {numFaces = std::stoi(numF); break;}
if (isdigit(input[5])) {numF.push_back(input[5]);}
else {numFaces = std::stoi(numF); break;}
break;
}
srand(time(NULL));
Log ("You got:\n");
for (int i{0}; i < numDice; i++)
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), 14);
int x{1 + rand() % numFaces};
std::cout << x << "\n";
rollTotal += x;
}
if (numDice != 1) {std::cout << "\n" << rollTotal << "\n\n";}
else {Log("\n");}
return main();
}