C/C++ | 字符串处理 char*数组 string类


今天练习解题,发现很多基础概念都记不清了,感谢我遇到了你们这些知识点盲区!


1. 二维数组动态创建

根据输入的行row与列col,动态创建二维数组。
// 创建一个m*n的整型数组
	int ** num = NULL;
	num = new int *[m];
	for( int i = 0; i < m; i ++ )
		num[i] = new int [n];

常见错误:通常使用动态创建的时候是一维声明时,因而在非声明语句时的等号左值容易出错(好吧,我出错了>.<)如:**num = new int *[m],*num = new int *[m]等等不胜枚举。记忆诀窍可以是第一次动态分配时,等号左侧为原来的变量名,不加任何*或[];等号右侧为减少一个指针符,以此类推。好吧,感觉总结不是很有力度,见谅。

2. 字符串输入,char型数组和string的区别

刚才遇见的问题是:将字符串中的空格替换为指定字符串。然而在C++下,string类也好,char型数组也好,都不支持直接的cin操作。另一方面,又不想止步于使用scanf,于是百度搜索结果如下。
// 输入两个字符串,都可包含空格符
	char input[1000] = {0}, sub[1000] = {0};
	cin.getline( input, 1000 );
	cin.getline( sub, 1000 );

调用cin的函数getline即可,不保存换行符,如若需要可替换为get函数,则保留换行符。虽然这些知识好像在C++书里都有,但是不用真的忘了呀。

3. 动态字符串的初始化问题

同样是解替换字符串的问题时遇见的,动态生成字符串时的初始化问题。我没有找到相应的库函数,而是改变思路,将初始化时申请的字符串空间扩大一位,在操作之后末尾位赋值为0,即可。感谢师弟!

// outlen 为输出字符串的长度
	output = new char [outlen+1];
	{
		// 中间处理代码
	}
	output[outlen] = 0;

加上字符串尾,输出正常。



题外话:
记录一下最近的心路感受吧。近期我尝试找实习,实话说挺心慌的,目前没有收到任何电话面试或面试通知。心理的情绪是纠结,紧张,害怕,非常复杂的。其实心中理想的去处,自己是明确的,只是觉得目前自己的能力达不到,故而每天复习的效率也不高,情绪低气压,也不太自信。
刚才一个凑巧,发现曾经的同伴已经远不及其项背了,心中的感觉真的非常复杂。但是,转念一想,曾经的同伴,与自己能力相似,当然对方有很多我值得学习的地方,我也从其身上收获了很多做事做人的经验,所以不必那么沮丧。企业的面试,自己好好准备,总有一天会有结果,抛出运气的成分,请相信自己,可以做到很棒。一个人的能力与环境,与机遇都密切相关,有时不可过多自责。当然,对于过去一年半那些我荒废的时间,我还是想说,现在看到差距了吧。。。哈哈哈。还记得刚把节奏放慢的时候,自己一度陷入无限的焦虑之中,玩不好,休息不好,但也学习不带劲。这与自己失去目标,但又意识到自己堕落颓废密切相关。现在一切过去,醒悟,也是好事。
继续向前吧!其实并没有那么难!请不要给自己设限,相信自己!一切好运!

未来回看现在的这些点滴,应该感觉很奇妙吧!哈哈哈,记录自己的小嘀咕&小低谷。

安啦!撤离实验室~

欢迎各路大神留言讨论!










  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值