鱼C论坛

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

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

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

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

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

x
这是我写的一个模拟进程调度的c++代码。我用了vector代替队列进行了实现
  1. #include <iostream>
  2. #include <algorithm>
  3. #include <vector>
  4. #include<time.h>

  5. #define random(a,b) (((int)rand()/RAND_MAX)*(b-a)+a)

  6. using namespace std;

  7. typedef struct PCBnode
  8. {
  9.         /*进程名称*/
  10.         string name = "0";
  11.         /*所需时间片*/
  12.         int RequireTimeSlice = 0;
  13.         /*进程状态,0为就绪态,1为运行态,2为完成态*/
  14.         int CurrentState = 0;
  15. }PCB;

  16. vector<PCB>ReadyQueue;

  17. bool isEmpty()
  18. {
  19.         return 0 == ReadyQueue.size();
  20. }

  21. void PrintInfo()
  22. {
  23.         if (isEmpty())
  24.         {
  25.                 cout << "空" << endl;
  26.                 return;
  27.         }
  28.         cout << "就绪队列为:" << endl;
  29.         for (int i = 0; i < ReadyQueue.size(); i++)
  30.         {
  31.                 PCB p = ReadyQueue[i];
  32.                 cout << p.name << " 仍需时间片:" << p.RequireTimeSlice << "个单位" << endl;
  33.         }
  34.         return;
  35. }

  36. int main()
  37. {
  38.         srand((int)time(0));
  39.         for (int i = 0; i < random(3, 10); i++)
  40.         {
  41.                 PCB p;
  42.                 p.name.assign("进程" + (char)(i + 49));
  43.                 cout << p.name << endl;
  44.                 p.RequireTimeSlice = random(2, 5);
  45.                 ReadyQueue.push_back(p);
  46.         }
  47.         PrintInfo();
  48.         return 0;
  49. }

复制代码



运行结果中,进程的名字不能正常显示,显示为:
:\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, 2024-5-19 17:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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