鱼C论坛

 找回密码
 立即注册
查看: 2002|回复: 5

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

[复制链接]
发表于 2020-3-22 12:16:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

求大佬解释,为什么会这样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-22 13:28:48 | 显示全部楼层
c++ string的加法必须要有一个是string
你的第一个是const char* + char 是不对的
最好是用string("进程“) + to_string( i + 49)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 13:59:21 | 显示全部楼层
time1970 发表于 2020-3-22 13:28
c++ string的加法必须要有一个是string
你的第一个是const char* + char 是不对的
最好是用string("进程 ...

不对啊,我改了之后报错,找不到to_string标识符
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 14:35:04 | 显示全部楼层
本帖最后由 time1970 于 2020-3-22 14:36 编辑
Mr.Newbe 发表于 2020-3-22 13:59
不对啊,我改了之后报错,找不到to_string标识符


包含头文件string
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-22 14:56:49 | 显示全部楼层

不行呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-22 15:04:49 | 显示全部楼层

你编译器用的啥
支持槽c++11标准吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 17:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表