字符串是n(>=0)个字符的有限序列, 是一种典型的线性数据结构. 这些字符在内存中按顺序逐个存放, 并以结束符” “结尾. 字符串可以视为一个特殊的数组, 其中每个元素都是一个字符型的变量.
  在C语言中, 使用字符数组存放字符串. 标准C++库中定义了string类, 并为其提供了必要的抽象来支持字符串的一些基本操作.
  下面是一个示例程序, 首先接受一个含有3个空格的字符串作为输入, 然后将字符串按空格进行拆分, 得到四个独立的子串. 然后重新进行拼接, 后用拼接后的新串判断与原字符串进行比较.
//
//  main.cpp
//  字符串
//
//  Created by Scarecrow on 16/12/4.
//  Copyright ? 2016年 XB. All rights reserved.
//
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char * argv[]) {
// insert code here...
string str = "中国 北京 五星红旗 义勇军进行曲";
string str_temp = "";
//将str的值赋给str_temp
str_temp.assign(str);
string result[4] = {""};
int position = 0;
for (int i = 0; i < 3; i++) {
//找到空格的索引
position = (int)str_temp.find(" ");
//截取0到position位置的子串赋值给result[i]
result[i] = str_temp.substr(0 ,position);
//更新str_temp的值, 删除从0到第一个空格索引的子串
str_temp = str_temp.substr(position + 1,str_temp.length() - position);
}
//for循环结束后,str_temp为空格后后一个子串
result[3] = str_temp;
cout<<": "<<result[0]<<endl;
cout<<"首都: "<<result[1]<<endl;
cout<<"国旗: "<<result[2]<<endl;
cout<<"国歌: "<<result[3]<<endl;
//交换str_temp和result[0]的值
str_temp.swap(result[0]);
for(int j = 1; j < 4; j++) {
//拼接字符串
str_temp+=" ";
str_temp.append(result[j]);
}
//比较拼接后的字符串和原字符串是否相同
int equal = str.compare(str_temp);
if (equal == 0) {
cout << "匹配成功"<< endl;
}else{
cout << "匹配失败"<< endl;
}
return 0;
}