std::string 简单入门
- string的定义原型

typedef basic_string<char, char_traits<char>, allocator<char> >
string;
typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> >
wstring; // 第二三个参数有默认值
- string部分构造方式

// string 部分构造方式
#include <iostream>
#include <string>
using namespace std; int main(void)
{
string s1;
string s2("ABCDEFG");
cout << s1 << endl;
cout << s2 << endl; // 使用最初的形式定义
basic_string<char> s3("xxxx");
cout << s3 << endl; /*
basic_string(
const value_type *_Ptr,
size_type _Count
);
*/
string s4("DEFG", 2);
cout << s4 << endl; // DE
/*
basic_string(
const basic_string& _Right,
size_type _Roff,
size_type _Count = npos
);
*/
string s5(s2, 2, 2);
cout << s5 << endl; //CD /*
basic_string(
const_iterator _First,
const_iterator _Last
);
*/
string::const_iterator first = s2.begin() + 1;
string::const_iterator end = s2.begin() + 3; // [first, end)
string s6(first, end);
cout << s6 << endl; // BC return 0;
}
- string常用成员函数

// string 部分成员函数部分形式操作
#include <iostream>
#include <string>
using namespace std; int main(void)
{
string s1("ABCDEC");
cout << s1.size() << endl;
cout << s1.length() << endl; cout << s1.empty() << endl;
// 一样第二个参数是count,不是截至位置
string s2 = s1.substr(1, /*4*/string::npos); // string::npos == 4294967295
cout << s2 << endl; //find
/*
size_type find(
value_type _Ch,
size_type _Off = 0
) const;
*/
// 查找某个字符在string中第一次出现的位置(下标),没找到返回 4294967295 最大值
cout << s1.find('C') << endl; // 2
//size_type -> size_t ->unsigned int
/*
size_type find(
const value_type* _Ptr,
size_type _Off = 0
) const;
*/
// 在string中查找字符串,找到返回第一次出现位置的下标,没找到返回 string::npos, 4294967295 最大值
cout << s1.find("CD") << endl; // 2
/*
size_type find(
const basic_string<CharType, Traits, Allocator>& _Str,
size_type _Off = 0
) const;
*/
// 在string中查找string
cout << s1.find(s2) << endl; //rfind,反向查找,返回第一次查找到的下标
cout << s1.rfind('C') << endl; // 5 //replace
/*
basic_string<CharType, Traits, Allocator>& replace(
size_type _Pos1,
size_type _Num1,
const value_type* _Ptr
);
*/
// 第三个参数也能是string,这里不写了,只介绍这一个好了
string s3 = s1;
s3.replace(1, 2, "RRR");
cout << s3 << endl; // ARRRDEC // compare
cout << s3.compare(s1) << endl; // 1, s3 > s1 // insert
/*
basic_string<CharType, Traits, Allocator>& insert(
size_type _P0,
const value_type* _Ptr
);
*/
s3.insert(2, "aaaaaaaaaaa");
cout << s3 << endl; // ARaaaaaaaaaaaRRDEC // append
/*
basic_string<CharType, Traits, Allocator>& append(
const value_type* _Ptr
);
*/
s3.append("OOOOOOOOOOOOOOOOO");
cout << s3 << endl; // ARaaaaaaaaaaaRRDECOOOOOOOOOOOOOOOOO // swap
/*
void swap(
basic_string<CharType, Traits, Allocator>& _Str
);
*/
s3.swap(s2);
cout << s3 << endl;
cout << s2 << endl; return 0;
}
- string综合应用
在字符集中查找存在的首尾字符,并截取。

#include <iostream>
#include <string>
using namespace std; int main()
{
string strinfo = " //*---------Hello World!--------------*//";
string strset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
/*
size_type find_first_of(
const basic_string<CharType, Traits, Allocator>& _Str,
size_type _Off = 0
) const;
*/
string::size_type first = strinfo.find_first_of(strset);
if (first == string::npos)
cout << "not found." << endl;
string::size_type end = strinfo.find_last_of(strset);
if (end == string::npos)
cout << "not found." << endl;
//cout << "string::npos" << string::npos << endl; // string::npos == 4294967295
cout << strinfo.substr(first, end - first + 1) << endl; return 0;
}
- string简单去除字符串左右空格

// string 简单实现去除字符串左右空格
#include <iostream>
#include <string>
using namespace std; class StringUtils {
public:
static void LTrim(string &s)
{
string drop = " \t";
s.erase(0, s.find_first_not_of(drop));
} static void RTrim(string &s)
{
string drop = " \t";
s.erase(s.find_last_not_of(drop)+1);
} static void Trim(string &s)
{
LTrim(s);
RTrim(s);
}
}; int main(void)
{
string s1 = " ABCD ";
StringUtils::Trim(s1);
cout << s1 << endl; // "ABCD"
cout << s1.size() << endl; // 4 return 0;
}
http://www.cnblogs.com/ifpelset/articles/4523925.html
std::string 简单入门的更多相关文章
- 标准C++类std::string的内存共享和Copy-On-Write...
标准C++类std::string的 内存共享和Copy-On-Write技术 陈皓 1. 概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否 ...
- 【转】标准C++类std::string的内存共享和Copy-On-Write技术
1. 概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是否还记得?在你还在上学的时候,你的父母要你不要看电视,而去复习功 ...
- 标准C++类std::string的内存共享和Copy-On-Write技术
标准C++类std::string的 内存共享和Copy-On-Write技术 陈皓 1. 概念 Scott Meyers在<More Effective C++>中举了个例子,不知你是 ...
- [原创]MYSQL的简单入门
MYSQL简单入门: 查询库名称:show databases; information_schema mysql test 2:创建库 create database 库名 DEFAULT CHAR ...
- could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'
VS2008, 写一个简单的demo的时候出现了这个: 1>------ Build started: Project: GetExportTable, Configuration: Relea ...
- Okio 1.9简单入门
Okio 1.9简单入门 Okio库是由square公司开发的,补充了java.io和java.nio的不足,更加方便,快速的访问.存储和处理你的数据.而OkHttp的底层也使用该库作为支持. 该库极 ...
- 【java开发系列】—— spring简单入门示例
1 JDK安装 2 Struts2简单入门示例 前言 作为入门级的记录帖,没有过多的技术含量,简单的搭建配置框架而已.这次讲到spring,这个应该是SSH中的重量级框架,它主要包含两个内容:控制反转 ...
- C++: std::string 与 Unicode 结合
一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单.基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于_UNICODE 的值: // abridged from tc ...
- C++: std::string 与 Unicode 如何结合?
关键字:std::string Unicode 转自:http://www.vckbase.com/document/viewdoc/?id=1293 一旦知道 TCHAR 和_T 是如何工作的,那么 ...
随机推荐
- AE地图查询
原文 AE地图查询 地图查询主要有两种查询:空间查询和属性查询 所用到知识点: 1 Cursor(游标)对象 本质上是一个指向数据的指针,本身不包含数据内容,提供一个连接到ROW对象或者要素对象(F ...
- 利用动态图层实现数据的实时显示(arcEngine IDynamiclayer)
marine 原文利用动态图层实现数据的实时显示(arcEngine IDynamiclayer) 说明:最近一个项目用到这方面知识,文章主要来至网络,后期会加入自己的开发心得.(以下的代码实例中,地 ...
- $_SERVER['DOCUMENT_ROOT']
$_SERVER['DOCUMENT_ROOT'] 一.总结 $_SERVER 是一个包含了诸如头信息(header).路径(path).以及脚本位置(script locations)等等信息的数组 ...
- 将OpenCV捕获的摄像头加载到picture控件中
CRect rect; CStatic* pStc; CDC* pDC; HDC hDC; pStc = (CStatic*)GetDlgItem(IDC_CAM);//IDC_CAM是Picture ...
- 《SPA设计与架构》之认识SPA
原文 简书原文:https://www.jianshu.com/p/84323f530223 大纲 前言 1.什么是单页面应用程序(SPA) 2.SPA与传统Web应用的区别 3.关于SPA的使用 4 ...
- [SCSS] Write similar classes with the SCSS @for Control Directive
Writing similar classes with minor variations, like utility classes, can be a pain to write and upda ...
- 网易前端微专业,JavaScript程序设计基础篇:数组
不论什么一种语言数组都是比較重要的,其作为一种基础对象应用非常多,如Java你肯定少不了集合(List,Map)这些.因此本篇主要记录JS的数组使用和经常用法.要点例如以下: 1,数组创建 两种方式: ...
- WP8.1开发:简单的天气预报应用
今天小梦给大家分享一个简单的天气预报应用源码:调用的是百度API.整个应用都没有什么难点.只是一个简单的网络请求和json数据处理.在WP8.1有小娜的情况下,天气预报应用还有意义吗?我认为还是有点意 ...
- ios开发事件处理之 :二:事件的产生与传递
1.事件是怎么样产生与传递的? 当发生一个触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中.(队列是先进先出,而栈是先进后出) UIApplication会从事件队列中 ...
- Android 使用Canvas在图片上绘制文字
一个小应用,在图片上绘制文字,以下是绘制文字的方法,并且能够实现自动换行,字体自动适配屏幕大小 private void drawNewBitmap(ImageView imageView, Stri ...