趴在西瓜上的熊猫 2021-04-18 16:47 采纳率: 0%
浏览 36

C++string本质和字符串字面值?

问一下各位大佬:
1.C++string类型的变量学校老师说本质是char类型的数组,然而班上一些大佬否认了这一观点,并且我在测试的时候也发现point(char* a)构造函数无法传入string类型变量。
请问string变量真的本质是char类型数组吗?
2.就point(const char* a)构造函数可以直接传入字符串字面量:point a("safsf")而不能传入:string c="asdfs"  point a(c)问题
想问一下:字符串字面量与字符串的区别?
相关代码:

头文件:

#pragma once
class Move_array
{
    int lenth;
    char* move_array;
public:
    static int get_length(const char* a1);
    static void addarray( char *a,const char* copyto, int L);
    Move_array(const char* ina) ;
    ~Move_array();
    Move_array(  Move_array&p);
    Move_array operator = (Move_array a);

    

};

源文件:

#include "Move_array.h"

//计算字符串长度
 int Move_array::get_length( const char* a1) {
     int num = 0;
     while (a1&&a1 != '\0') {
         num++;
         a1++;
     }
     return num;
}


  void Move_array::addarray( char *a, const char* copyto, int L) {
      for (int i = 0; i < L; i++) {
          a[i] = copyto[i];
      }
 }


  Move_array:: ~Move_array() {
      delete [] move_array;   //[]
  }

  Move_array::Move_array(const char* ina) :lenth(get_length(ina)), move_array(lenth > 0 ? new char[lenth] : nullptr) {
      addarray(move_array, ina, lenth);

  }


  Move_array::Move_array( Move_array&p) {
      lenth = p.lenth;
      if (lenth > 0) {
          move_array = new char[lenth];
          addarray(move_array, p.move_array, lenth);
      }
      else {
          move_array = nullptr;
      }
  }

  Move_array Move_array::operator = (Move_array a) {      //为什么是const 类型+& 名字
      if (this != &a) {
          delete move_array;
          lenth = a.lenth;
          move_array = new char[lenth];
          addarray(move_array, a.move_array, lenth);
      }
      return *this;
  }

mian函数源文件:

#include<iostream>
#include"Move_array.h"
#include<string>
using namespace std;

int main() {
    //char a[] = { 'a','c','\0' };
    ;
    Move_array array_a("sdsf");

}

 

 

 

  • 写回答

4条回答 默认 最新

  • 关注

    字符串本质就是字符数组,String那是经过封装过了的类,当然不完全一致了。

    评论

报告相同问题?

悬赏问题

  • ¥15 把从欧空局下载的哨兵一号数据导入snap的时候出现这个问题该怎么解决😥
  • ¥15 有没有ND4J能用的MAVEN地址
  • ¥15 外接电阻采用星形连接,测量一个电阻的相电压,用数据采集卡进行显示,而电机旋转转速有1300r/min,按照此电机的转速常数,应该电压值为15v左右
  • ¥100 oracle sgd 部署概要
  • ¥20 escpos打印到CUPS打印机
  • ¥15 MATLAB读取TXT,并添加度分秒
  • ¥15 excel提示内存不足
  • ¥15 软件安装包用的是openinstall 在普通路由上有一些限速,怎么提速
  • ¥15 msgeq7根据音乐控制电机
  • ¥15 51单片机PN532刷卡原理图代码