#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;
}

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

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

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

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

    回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议   引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的 ...

  3. 顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

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

    引言 LZ之前其实一直对python都很好奇,只是苦于平时没有时间去了解它,因此趁着51假期这个机会,便迫不及待的开始了自己的探索.作为一个标准的Java程序猿,在了解python的过程当中,LZ遇到 ...

  5. Java程序猿学习的建议(转)

    第一部分:对于尚未做过Java工作的同学,包括一些在校生以及刚准备转行Java的同学. 一.Java基础 首先去找一个Java的基础教程学一下,这里可以推荐一个地址,或者你也可以参照这个地址上去找相应 ...

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

    数组: #include <iostream> using namespace std; //模板函数 template <class T> void dump(T val) ...

  7. 如何准备阿里社招面试,顺谈 Java 程序员学习中各阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  8. 一个两年java程序猿的2017个人总结

    前言 又到了一年中最后的日子了,相信有不少公司要求员工写年度总结了,我也不例外.不过个人感觉在公司的写个年度总结来说,过于模板化了.其实很多没有必要.总之,本篇的个人总结,是按照个人的想法写的.简而言 ...

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

    引言 很尴尬的是,这个类型的文章其实之前笔者就写过,原文章里,笔者自称LZ(也就是楼主,有人说是老子的简写,笔者只想说,这位同学你站出来,保证不打死你,-_-),原文章名称叫做<回答阿里社招面试 ...

随机推荐

  1. ubuntu下SVN服务器安装配置

    SVN服务器端: 1.安装包 $ sudo apt-get install subversion 2.添加svn管理用户及subversion组 $ sudo adduser svnuser $ su ...

  2. .where(provider).FirstOrDefault()和.FirstOrDefault(provider)的性能比较

    最近遇到一个关于Linq的问题,.where(provider).FirstOrDefault();和.FirstOrDefault(provider);的性能比较 关于这个主要有以下三种说法,但这方 ...

  3. 【转载】Using the Web Service Callbacks in the .NET Application

    来源 This article describes a .NET Application model driven by the Web Services using the Virtual Web ...

  4. /etc/passwd 与 /etc/shadow

    /etc/passwd是用户数据库,其中的域给出了用户名.加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件.影子口令文件将/etc/pas ...

  5. c#中总是提示“在代码运行时或者在禁用“只要一个进程中断,就中断所有进程”选项时,不允许进行更改。

    但是根据它提示的修改方法,还是提示这个. “此选项可在“工具”->“选项”->“调试”中启用.” 根本不起作用,后来试着,要这样操作: 工具->选项->调试->编辑并继续 ...

  6. selectpicker下拉多选框ajax异步或者提前赋值=》默认值

    Bootstrap select多选下拉框赋值 success: function (data) { var oldnumber = new Array(); $.each(data, functio ...

  7. MST(prim)+树形dp-hdu-4756-Install Air Conditioning

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4756 题目意思: n-1个宿舍,1个供电站,n个位置每两个位置都有边相连,其中有一条边不能连,求n个 ...

  8. 【转】c++重载、覆盖、隐藏——理不清的区别

    原文网址:http://blog.sina.com.cn/s/blog_492d601f0100jqqm.html 再次把林锐博士的<高质量c++编程指南>翻出来看的时候,再一次的觉得这是 ...

  9. 使用Eclipse构建GeoTools项目

    转自:http://hi.baidu.com/liushuigs/item/a62969e6667f9815585dd8b1 由于GeoTools是原本是使用Maven构建的,所以,不能直接将工程导入 ...

  10. android学习——ADT的离线安装

    前一篇讲解了ADT的在线安装,不过有的时候在线在线安装的速度很慢.所以今天学习一下ADT的离线安装: 首先 下载与SDK相对应的ADT(如果SDK是最新版的就下最新版ADT否则就把SDK更新到最新版以 ...