作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我不是英语,所以我会尽力解释。我抛出这个线程,其中 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/
我是一名优秀的程序员,十分优秀!