gpt4 book ai didi

c++ - 我不明白这个 : terminate called after throwing an instance of 'std::length_error'

转载 作者:行者123 更新时间:2023-11-27 23:59:42 25 4
gpt4 key购买 nike

首先,我不是英语,所以我会尽力解释。我抛出这个线程,其中 saludo 表示问候,retardo 表示延迟,numero 表示数字,我还创建了 veces 来多次说这会发生。所以我要做的是创建 10 个线程,它们将在屏幕上显示 5 到 15 次,并且延迟从 100 到 300,它们是一个数字(“Soy”数字),但我有这个错误我根本无法解决。它适用于 2-3 个线程,然后停止。顺便说一句,谢谢。

#include <iostream>
#include <thread>
#include <string>
#include <chrono>
#include <time.h>

using namespace std;

void saludo(string m, int retardo, int numero) {
string tabs(numero - 1, '\t');
cout << tabs << m << numero << +"\n";
this_thread::sleep_for(chrono::milliseconds(retardo));
}

int main() {
int nthread = 10;
srand(time(NULL));
thread P[nthread];
int i = 0;

while(i<nthread){
int retardo = rand() % 201 + 100;
int veces = rand() % 11 + 5;

for (int x = 0; x<veces; ++x){
int numero = rand() % 10;
P[i] = thread(&saludo, "Soy ", retardo, numero);
P[i].join();
}
}

cout << "Fin\n";
return 0;
}

最佳答案

此错误是因为您可能已将负数传递给 std::string 构造函数。 rand() % 10 可能会给出 0。而你正在执行 string tabs(numero - 1, '\t'); 如果 numero 为 0。

关于c++ - 我不明白这个 : terminate called after throwing an instance of 'std::length_error' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40082769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com