Java程序猿学习C++之字符串

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

int my_len(const char *str)
{
	int len = 0;
//	while (*str != '\0')
//	{
//		++len;
//		++str;
//	}

	while (*(str++) != '\0')
	{
		++len;
	}

	return len;
}

void my_cpy(char *dst,const char *src)
{
	while (*src != '\0')
	{
		*dst = *src;
		++dst;
		++src;
	}
}

int main()
{
	char str1[] = "abc";//后面自己主动加上'\0'
	char str2[] = { 'a', 'b', 'c' };//后面不会自己主动加上个'\0',作为字符串会一直找到'\0'标志
	char str3[] = { 'a', 'b', 'c' ,'\0'};
	char str4[10] = "abc";

	//              4                      3                      4                      10
	cout << sizeof(str1) << "," << sizeof(str2) << "," << sizeof(str3) << "," << sizeof(str4) << endl;
	//              3                      15                      3                      3
	cout << strlen(str1) << "," << strlen(str2) << "," << strlen(str3) << "," << strlen(str4) << endl;
	cout << my_len(str1) << "," << my_len(str2) << "," << my_len(str3) << "," << my_len(str4) << endl;

	//       abc       abc烫烫烫烫蘟bc    abc            abc
	cout << str1 << "," << str2 << "," << str3 << "," << str4 << endl;

	//字符串赋值
	//str1 = str2;// 错误。数组名是地址常量
	//str1 = "hello";// 错误。数组名是地址常量
	strcpy(str4,str1);

	//strcmp(str1,str2);字符串比較
	//strcat(str3,str2);字符串拼接,必须推断空间是否够

	//字符串切割
	char str[] = "this is a test";
	char *token = strtok(str, " ");
	while (token != NULL)
	{
		cout << token << endl;
		token = strtok(NULL," ");
	}

	return 0;
}

c++风格字符串

#include <iostream>
#include <string>
using namespace std;

int main()
{
	string str1 = "hello";
	string str2 = "abc";
	string str3 = "abc";

	//拷贝赋值
	str3 = str1;
	cout << str1 << "," << str3 << endl;

	//获取长度
	cout << str1.length() << endl;

	//字符串的比較
	str1.compare(str3);

	//字符串拼接
	str3 += str2;

	//字符串切割
	string str4 = "this is a test";
	//转换为c风格的string
	//char *token = strtok((char *)str4.c_str(), " ");//强制类型转换
	char *token = strtok(const_cast<char *>(str4.c_str()), " ");
	while (token != NULL)
	{
		cout << token << endl;
		token = strtok(NULL, " ");
	}

	//遍历字符串(string::size_type i = 0; i < str1.length();i++)
	for (string::size_type i = 0; i < str1.length(); i++)
	{
		cout << str1[i] << "-" ;
	}
	cout << endl;

	for (string::size_type i = 0; i < str1.length(); i++)
	{
		cout << str1.at(i) << "-";
	}
	cout << endl;

	for (string::iterator itr = str1.begin(); itr != str1.end();++itr)
	{
		cout << *itr << "-";
	}
	cout << endl;

	int cnt = 0;
	while (cnt < 50)
	{
		if (str1.size() == str1.capacity())
		{
			//cout << "hhh";
		}
		str1.push_back('*');
		cnt++;
		//cout << str1.size() << "," << str1.capacity() << endl;
	}

	str1.clear();
	if (str1.empty())
	{
		cout << "str1.empty";
	}

	return 0;
}
时间: 2024-08-06 21:38:36

Java程序猿学习C++之字符串的相关文章

人在囧途——Java程序猿学习Python

引言 LZ之前其实一直对python都很好奇,只是苦于平时没有时间去了解它,因此趁着51假期这个机会,便迫不及待的开始了自己的探索.作为一个标准的Java程序猿,在了解python的过程当中,LZ遇到了很多囧事,接下来LZ就一一给大家说道说道.本文纯属看个乐子,非python教学. 囧事一:eclipse插件安装篇 由于LZ习惯了使用eclipse进行开发,因此对python的研究,还是希望可以在eclipse上进行试验.那么第一件事,自然是安装python的eclipse插件,于是百度.goo

Java程序猿学习当中各个阶段的建议

回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议 引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问LZ的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前LZ写过一篇文章,但是那篇文章更多的是在讨论“面试前该不该刷题”这个

回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议

其实本来真的没打算写这篇文章,主要是我得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.我自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容基本上忘得一干二净,所以写这篇文章其实是很有难度的. 但是,最近问我的人实在是太多了,为了避免重复回答,给自己省点力气,干脆就在这里统一回复了. 其实之前我写过一篇文章,但是那篇文章更多的是在讨论"面试前该不该刷题"这个话题,而这篇文章将会更加聚焦在面试前如何准备,以及工作当中如何学习这个话题上,而

Java程序猿学习C++之数组和动态数组

数组: #include <iostream> using namespace std; //模板函数 template <class T> void dump(T val) { cout << ">>>>" << __FUNCTION__ << endl;//内置的宏,打印当前函数的名字 cout << sizeof(val) << ":" <<

Java程序员学习C++之字符串

#include <iostream> #include <string.h> using namespace std; int my_len(const char *str) { int len = 0; // while (*str != '\0') // { // ++len; // ++str; // } while (*(str++) != '\0') { ++len; } return len; } void my_cpy(char *dst,const char *s

面试?顺谈Java程序员学习中各阶段的建议

第一个问题:阿里面试都问什么? 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题.说实话,LZ只能隐约想起并发.JVM.分布式.TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住.而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小. 甚至,就算你运气好被问到了,你也照着背下来了,也不一定就能对你的面试起到正面的作用,因为面试官万一多问一句,你可能就露馅了,那还不如干脆点说不会更好. LZ参加的是阿里的社招面试,而社招不同

聊聊阿里社招面试,谈谈“野生”Java程序员学习的道路

阿里社招面试都问什么? 和之前一样,文章一上来,我们先来谈谈阿里的社招面试都问什么,其实这个话题并不是什么秘密,所有来阿里面试过的同学,都能回答一二. 两年前的时候,笔者在文章里是这么回答的. 这个是让LZ最头疼的一个问题,也是群里的猿友们问的最多的一个问题. 说实话,LZ只能隐约想起并发.JVM.分布式.TCP/IP协议这些个关键字,具体的问题真的是几乎都没记住.而且就算LZ记住了,也告诉你了,你也背会了,但LZ觉得,在面试中,你被问到一模一样问题的可能性依然很小. 甚至,就算你运气好被问到了

JAVA程序猿怎么才干高速查找到学习资料?

JAVA程序猿怎么才干高速查找到学习资料? JAVA学习资料在互联网上较为零散,并且大多是英文的.以下介绍3种方式,让程序猿能够高速地找到自己想要的资料. 一.导航站点: 有非常多类似hao123的站点,整合了非常多程序相关的资源,比如有一个"精简导航",依照语言的分类,整合了非常多的学习资源,网址是http://www.brieftools.info/ ,我们仅仅须要进入导航站,找到JAVA相应的资源就可以.导航上还有非常多其它语言的资源,假设后期准备学站点相关的东西,导航上面也有相

《Java程序猿面试笔试宝典》之字符串创建与存储的机制是什么

在Java语言中.字符串起着非常关键的数据.字符串的声明与初始化主要有例如以下两种情况:(1) 对于String s1=new String("abc")语句与String s2=new String("abc")语句,存在两个引用对象s1.s2,两个内容同样的字符串对象"abc".它们在内存中的地址是不同的.仅仅要用到new总会生成新的对象. (2) 对于String s1 = "abc"语句与String s2 = &qu