//============================================================================
// Name : InsertSort.cpp
// Author : YL
// Version :
//============================================================================
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s = "fsafdsfa";
cout << s.c_str() << endl;
// 想要输出string类型的变量,不能直接输出要用s。c_str()这个方法
char chA = s[5];
char chD = s.at(5);
cout <<"chA = "<<chA<<"\nchD = "<<chD<<endl;
// 用上述两种方式调用都是一样的,只是用s.at()这个方式可以做溢出检测
// 比如当index超出s的长度时,这个会抛出out_of_range的异常。
// output:
// chA = s
// chD = s
char e[8] = {0};
int iCount = s.copy(e,5,2);
cout<<"e="<<e<<"\nicount="<<iCount<<endl;
//output
// e = afd,表示了从下标为2的位置开始输出3个字符。
// icount = 5,表示了函数返回了输出字符的个数
string strA("yuanlei");
string strB("handsome");
strB += strA; //此时strB为 "yuanlei handsome"
strB +="!";
strB.append("123");//该函数和python中的一样的效果,在字符串末尾加上对应的字符。
strB.append("abcd",2);
string strC("STLtest");
strB.append(strC,3,3);
strB.append(5,'U');
cout << strB.c_str()<<endl;
//output....
string strA("acdq");
string strB("bab");
string strC("bab");
string strD("Bab");
int iAB = strA.compare(strB);
int iBA = strB.compare(strA);
int iBC = strB.compare(strC);
int iCD = strC.compare(strD);
//output
//iAB =-1
//iBA = 1
//iBC = 0
//iCD = 1
string strA("UIPower");
string strB = strA.substr(2,3); //此时strB的内容为"Pow"
strA.replace(2,2,"-----"); //此时strA的内容为"UI-----wer"
strA.erase(2,4); //删除某个位置
string strB("hello");
strA.swap(strB); //相当于把strA和strB互换了一下
//output
//Pow
//string的查找
//看下面的图pain
return 0;
}
编码统一化,编写单一源代码
如果我们想建立两个版本的程序,一个处理ASCII字符串,另一个处理Unicode字符串,最好的解决办法就是比那些既能够按照ASCII编译又能够按照Unicode编译的单一源代码。把以下代码加入到程序中,只要修改一个宏就能满足我们的要求了。
#ifdef _UNICODE
typedef wstring tstring;
typedef wchar_t tchar;
#define _T(X) L##x
#else
typedef string tstring;
typedef char tchar;
#define _T(X) x
#endif