C++ 面试题——实现String类

C++面试常见问题:手写String类 阅读详情

需要实现:构造函数, 拷贝构造函数,复制运算符,析构函数,size函数等等。

主要思路:用cstring的一些库函数来实现。
底层的数据结构char*
会用到 strlen, strcpy等库函数

#include <iostream>
#include <string>
#include <vector>
#include<cmath>
#include<algorithm>
#include<vector>
#include<cstring>
using namespace std;

class String{
public:
    String();
    String(const String & str);
    String(const char* str);
    String& operator=(String str);
    char* c_str() const;
    ~String();
    int size() const;
private:
    char* data;
};

int String::size() const {
    return strlen(data);
}

String::~String() {
    delete [] data;
}

char* String::c_str() const {
    return data;
}

String::String():data(new char[1]) {
    *data='\0';
}

String& String::operator=(String str) {
    data=new char[str.size()+1];
    strcpy(data,str.c_str());
    return *this;
}

String::String(const String& str) : data(new char[str.size()+1]) {
    strcpy(data, str.c_str());
}

String::String(const char* str) : data(new char[strlen(str)+1]) {
    strcpy(data,str);
}

// 以下代码用来测试

void foo(String x)
{
}
void bar(const String& x)
{
}
String baz()
{
  String ret("world");
  return ret;
}
int main()
{
    String s0;
    String s1("hello");
    String s2(s0);
    String s3 = s1;
    s2 = s1;
    foo(s1);
    bar(s1);
    foo("temporary");
    bar("temporary");
    String s4 = baz();
    std::vector<String> svec;
    svec.push_back(s0);
    svec.push_back(s1);
    svec.push_back(baz());
    svec.push_back("good job");
    system("pause");
    return 0;
}

eNSP安装教程 eNSP安装教程一、安装eNSP1、先安装依赖组件2、安装eNSP主程序eNSP+V100R003C00SPC100+Setup ---不要安装在中文路径下3、安装完成后注册设备 一、安装eNSP 程序包位置:https://drive.weixin.qq.com/s?k=AOgAQQfOAAsw1wAKEgAAcAbgbSAKQ 1、先安装依赖组件 依赖组件: WinPcap_4_1_3 —直接下一步,但不要安装在中文路径下 Wireshark_v3.4.6 或者wireshark-win3 阅读详情

相关推荐

使用Bigemap下载地图流程

Bigemap地图下载简单流程,临时安排任务简单学习没有深入了解。

TKY666的博客 4846

C++面试题---String类实现

C++的String 在C语言里,字符串是用字符数组来表示的,而对于应用层而言,会经常用到字符串,而继续使用字符数组,就使得效率非常低. 所以在C++标准库里,通过类string从新自定义了字符串。 #include <iostream> #include <cstring> using namespace std; //写一个string类 class String{ private: char *m_str; //指针成员 public: //构造函数 String

weixin_53272394的博客 400

Arduino+NRF24L01 无线遥控舵机与无刷电机系统搭建指南

本文详细介绍了使用Arduino和NRF24L01模块搭建无线遥控系统的完整指南,涵盖舵机和无刷电机的无线控制。从硬件选型、电路连接到代码编写与调试,提供了实用技巧和常见问题解决方案,帮助DIY爱好者低成本实现稳定可靠的无线遥控应用。

sre5engineer的博客 588

C++中string类的实现

在c++的标准库中我们处理字符串的时候需要使用string类,库中的使用接口都非常方便。为了让我们更加了解有关库中的相关函数,我们需要自己来实现一遍。

m0_65014490的博客 1822

DMA 定制固件教程:小白跟做即得单人固件,超详细纯喂饭教程,100% 成功秘籍!FPGA仿真1:1、中断逻辑和TLP核心都在。

DMA 定制固件教程 小白跟着操作做可以做出的单人固件。DMA仿真技术io、中断逻辑,从零仿真。图文链接教程:https://docs.qq.com/doc/DQ01lVGtHelROVHNv

qq_15741349的博客 3万+

[华中科技计组实验]logisim完成单周期5级流水MIPS CPU

[华中科技计组实验]logisim完成单周期5级流水MIPS32 CPU hu~,终于完成了,真是费劲呐 支持24条指令,5级流水线,可以对分支指令处理,寄存器冲突处理,指令ROM为1K,数据RAM为1M,32位MIPS指令集CPU 但是… 大量使用比较器造成硬件开销巨大,测试一下发现这尼玛真是个老爷车还没单周期跑的快,自己电脑cpu占百分之八九十只能跑到20多赫兹,一个走马灯跑了半天,可优化空间太大了,写了那么多天造成这个破样,有点悲剧。。。 先放个图大伙参考就行了,要是有人想听思路的话接下来再更 .

zrc的博客 1万+

C++面试题之模拟实现string类

C++中的string类是一个很常见的面试题,string类里必须有的构造函数,拷贝构造,赋值运算符重载,析构函数等成员函数,下面看看是如何实现以及如何处理动态内存 写时拷贝技术是通过"引用计数"实现的,因为浅拷贝的缺陷,所以在这个时候我们就引入了引用计数的拷贝。但是当其中一个对象改变它的值时,其他对象的值就会随之改变,所以此时我们采取这样一种做法,就是写时拷贝。写时拷贝指用浅拷贝的方法拷贝其他对象,多个指针指向同一块空间,只有当对其中一个对象修改时,才会开辟一个新的空间给这个对象,和它原来指向同一空间

TerryZjl的博客 1302

NE564锁相环FM解调电路设计:10.7MHz中频实测与3种失真优化方案

本文详细解析了NE564锁相环在10.7MHz中频FM解调电路中的设计与优化方案。通过分析锁相环技术基础、电路架构设计及典型失真问题,提供了3种有效的失真优化方法,包括限幅增强、VCO频偏补偿和环路滤波优化,显著提升解调性能。文章还涵盖了PCB布局要点和系统测试验证,为高频电子线路设计提供实用参考。

weixin_33314040的博客 350

c++经典面试题之String类的实现

//mystring.h #include&lt;iostream&gt; using namespace std; class String { char *str; int len; enum{CINLIM=90}; //输入字符不能超过90 public: String(const char *s); String(); String(...

Lawrence_121 1328

Virtuoso ADE Explorer实战技巧:从基础操作到高级仿真

本文深入解析了Virtuoso ADE Explorer在模拟电路仿真中的核心价值与实战技巧。作为Cadence平台的专业工具,它专为高效、系统化的设计空间探索而生,能大幅提升PVT验证、参数扫描和蒙特卡洛分析的效率。文章从基础界面操作、并行仿真管理,到高级的参数扫描、数据报告生成及蒙特卡洛结果深度剖析,提供了全面的避坑指南与工作流优化建议,帮助工程师从重复劳动中解放,专注于电路设计与性能优化。

ios99的博客 898

Palantir 凭什么两年涨 20 倍?深度解析解决 AI 幻觉的 “本体论“ 核心原理

本文深度解析了Palantir本体(Ontology)的核心原理及其在企业AI应用中的革命性价值。本体通过构建结构化的语义层与动态执行层,将企业分散的数字资产(数据集、虚拟表、模型)映射为现实世界的数字孪生,使大模型能够在**严格的业务规则与数据边界内**进行推理与决策,从而从架构层面彻底解决AI幻觉问题。这一技术架构不仅帮助Palantir实现股价两年增长20倍、市值突破4000亿美金的商业成功,更成为SAP、Salesforce等ERP巨头争相模仿的下一代企业智能标准范式。通过航空业飞机故障应急处理等实

program哲学 223

C++面试题 之 实现String类

转载:https://coolshell.cn/articles/10478.html C++ 的一个常见面试题是让你实现一个 String 类,限于时间,不可能要求具备 std::string 的功能,但至少要求能正确管理资源。具体来说: 能像 int 类型那样定义变量,并且支持赋值、复制。 能用作函数的参数类型及返回类型。 能用作标准库容器的元素类型,即 vector/list/deque 的 value_type。(用作 std::map 的 key_type 是更进一步的要求,本文从略)。 换言之

lyly_h的博客 625

详解FreeRTOS:低功耗Tickless模式(高级篇—7)

FreeRTOS提供了一个叫做Tickless的低功耗模式,本篇博文我们就来学习一下如何使用这个Tickless模式。

不脱发的程序猿 1897

【经典面试题】C++实现String类

String的默认构造函数,构造函数,拷贝构造函数,析构函数,赋值构造函数 #ifndef STRING_H_ #define STRING_H_ class String { public: String(); String(const char *str); String(const String &rhs); ...

danxibaoxxx的博客 393

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

C++面试题(二)——自己实现一个String类

实现一个自己的String类是一道考验C++基础知识的好题。 至少要能实现以下:构造函数,析构函数,拷贝构造函数(copy constructor),重载赋值操作符(copy assignment operator)。 首先是至少能够准确的写出这几个函数的声明。 String() 老版本的拷贝构造函数和重载赋值操作符时:有几点需要注意的是:把自己赋值给自己,异常安全性。 通过使用swap

算法的天空 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C++面试题:String类的实现

C++面试题:String类的实现 标签: string   http://blog.youkuaiyun.com/yvhqbat/article/details/51611413 2016-06-08 10:32 330人阅读 评论(0) 收藏 举报 分类: 面试前需要复习的知识点(13) 版权声明:本文为博主原创文章,未经博主允许不得转载

mmbbz的专栏 397

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C++面试题--string类的实现

c++的一个常见的面试题即写一个简单的string类,这个类中应该有着必要的构造函数、复制构造函数、赋值操作符、析构函数等功能,需要很好的处理内存的问题。赋值操作符的多种写法:1.一般的经典写法为(没有考虑异常处理): 这里还要注意的是:令赋值操作符返回一个reference to *this:详细见《effective c++》String& String::operator=(const St

yqtao的博客 3651

【C++面试题】—— 【string类的模拟实现】骇客视角带你解析如何写出高效的 string 类面试题

简洁高效的C++ String类实现 本文实现了一个简洁高效的C++ String类,满足基本字符串操作需求,并符合现代C++规范。 核心设计 单一数据成员:仅使用char* _data存储字符串,保证始终以'\0'结尾 资源管理:完整实现构造、析构、拷贝构造和赋值操作(Big Three) 高效操作:使用swap技术实现异常安全的赋值操作 关键实现 class String { public: // 默认构造 String() : _data(new char[1]) { *_data = '\0'; }

枫亭湖区的博客 1096

C++面试题(二)——实现一个String类

实现一个自己的String类是一道考验C++基础知识的好题。 至少要能实现以下:构造函数、析构函数、拷贝构造函数(copy constructor)、重载赋值操作符(copy assignment operator)。首先是至少能够准确的写出这几个函数的声明。 ...

qq_40245974的博客 669

[面试题][C++] string类实现

#include&lt;iostream&gt; using namespace std; //练习C++中构造函数,拷贝构造函数,赋值函数 class String{ private: char *m_string; public: //构造函数 String(const char *str = NULL); /*拷贝构造函数----入参必须为引用,不为值传递是为了防止拷贝构造函数...

qiuye2014的博客 307

面试题之c++String类的实现

已知类String的原型为: class String { public: String(const char *str = NULL); String(const String &amp;other); String &amp;operator=(const String &amp;other); String operator +(const String &amp;other); frien...

pycharm_u的博客 528

c 自定义实现string类 clear_「C++」 string类的实现

string 类的实现是一个经常考的面试题,主要考察运算符的重载以及内存管理,还有可以考察面试者的代码风格。这是我自己实现的一个简单的 string 类,有需要的可以参考。代码如下:1、mystring.h// 自定义 MyString 类#define _CRT_SECURE_NO_WARNINGS#pragma once#include using namespace std;class My...

weixin_39571219的博客 285

[经典面试题][百度]c++实现STL中的string类

题目请用c++ 实现stl中的string类,实现构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等功能。代码/*------------------------------------- * 日期:2015-03-31 * 作者:SJF0115 * 题目: 实现string类 * 来源:百度 * 博客: -------------------------------

SmartSi 3514
上一篇: LeetCode 92. 反转链表 II
下一篇: LeetCode 33. 搜索旋转排序数组
wenkun97
博客等级 码龄10年 15粉丝 139原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值