Mr.Newbe 发表于 2020-3-22 12:16:14

求大佬解释为什么字符串不能赋值了

这是我写的一个模拟进程调度的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个单位

求大佬解释,为什么会这样

time1970 发表于 2020-3-22 13:28:48

c++ string的加法必须要有一个是string
你的第一个是const char* + char 是不对的
最好是用string("进程“) + to_string( i + 49)

Mr.Newbe 发表于 2020-3-22 13:59:21

time1970 发表于 2020-3-22 13:28
c++ string的加法必须要有一个是string
你的第一个是const char* + char 是不对的
最好是用string("进程 ...

不对啊,我改了之后报错,找不到to_string标识符

time1970 发表于 2020-3-22 14:35:04

本帖最后由 time1970 于 2020-3-22 14:36 编辑

Mr.Newbe 发表于 2020-3-22 13:59
不对啊,我改了之后报错,找不到to_string标识符

包含头文件string

Mr.Newbe 发表于 2020-3-22 14:56:49

time1970 发表于 2020-3-22 14:35
包含头文件string

不行呢

time1970 发表于 2020-3-22 15:04:49

Mr.Newbe 发表于 2020-3-22 14:56
不行呢

你编译器用的啥
支持槽c++11标准吗
页: [1]
查看完整版本: 求大佬解释为什么字符串不能赋值了