求大佬解释为什么字符串不能赋值了
这是我写的一个模拟进程调度的c++代码。我用了vector代替队列进行了实现#include <iostream>
#include <algorithm>
#include <vector>
#include<time.h>
#define random(a,b) (((int)rand()/RAND_MAX)*(b-a)+a)
using namespace std;
typedef struct PCBnode
{
/*进程名称*/
string name = "0";
/*所需时间片*/
int RequireTimeSlice = 0;
/*进程状态,0为就绪态,1为运行态,2为完成态*/
int CurrentState = 0;
}PCB;
vector<PCB>ReadyQueue;
bool isEmpty()
{
return 0 == ReadyQueue.size();
}
void PrintInfo()
{
if (isEmpty())
{
cout << "空" << endl;
return;
}
cout << "就绪队列为:" << endl;
for (int i = 0; i < ReadyQueue.size(); i++)
{
PCB p = ReadyQueue;
cout << p.name << " 仍需时间片:" << p.RequireTimeSlice << "个单位" << endl;
}
return;
}
int main()
{
srand((int)time(0));
for (int i = 0; i < random(3, 10); i++)
{
PCB p;
p.name.assign("进程" + (char)(i + 49));
cout << p.name << endl;
p.RequireTimeSlice = random(2, 5);
ReadyQueue.push_back(p);
}
PrintInfo();
return 0;
}
运行结果中,进程的名字不能正常显示,显示为:
:\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector
\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector
Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector
就绪队列为:
:\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector 仍需时间片:2个单位
\Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector 仍需时间片:2个单位
Visual Studio\VC\Tools\MSVC\14.25.28610\include\vector 仍需时间片:2个单位
求大佬解释,为什么会这样 c++ string的加法必须要有一个是string
你的第一个是const char* + char 是不对的
最好是用string("进程“) + to_string( i + 49) time1970 发表于 2020-3-22 13:28
c++ string的加法必须要有一个是string
你的第一个是const char* + char 是不对的
最好是用string("进程 ...
不对啊,我改了之后报错,找不到to_string标识符 本帖最后由 time1970 于 2020-3-22 14:36 编辑
Mr.Newbe 发表于 2020-3-22 13:59
不对啊,我改了之后报错,找不到to_string标识符
包含头文件string time1970 发表于 2020-3-22 14:35
包含头文件string
不行呢 Mr.Newbe 发表于 2020-3-22 14:56
不行呢
你编译器用的啥
支持槽c++11标准吗
页:
[1]