#include <iostream>
#include <string> //string类头文件
using namespace std;
#include "UnicodeToANSI.h"
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
// ---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
}
// ---------字符串迭代器与反向迭代器------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender) {
Memo1->Text = "字符串迭代器与反向迭代器 C++ Builder窗口示例";
string line("One,Two,Three");
string s(line.begin(), line.end()); // 正向遍历容器
UnicodeString su = ANSIToUnicode(s);
Memo1->Lines->Add("正向遍历:" + su);
string s2(line.rbegin(), line.rend()); // 反向遍历容器
su = ANSIToUnicode(s2);
Memo1->Lines->Add("反向遍历:" + su);
// --------------------------------------------
int i = 0;
char arr[255];
string::iterator itr; // 定义迭代器
for (itr = line.begin(); itr != line.end(); itr++) {
arr[i] = *itr;
i++;
}
string s3;
for (i = 0; i < line.length(); i++) {
s3 = s3 + arr[i];
}
su = ANSIToUnicode(s3);
Memo1->Lines->Add("正向迭代:" + su);
// --------------------------------------------
i = 0;
for (itr = line.end() - 1; itr != line.begin(); itr--) {
arr[i] = *itr;
i++;
}
s3 = "";
for (i = 0; i < line.length(); i++) {
s3 = s3 + arr[i];
}
su = ANSIToUnicode(s3);
Memo1->Lines->Add("反向迭代:" + su);
// --------------------------------------------
string::reverse_iterator ritr; // 定义反向迭代器
i = 0;
for (ritr = line.rbegin(); ritr != line.rend(); ritr++) {
arr[i] = *ritr;
i++;
}
s3 = "";
for (i = 0; i < line.length(); i++) {
s3 = s3 + arr[i];
}
su = ANSIToUnicode(s3);
Memo1->Lines->Add("定义反向迭代:" + su);
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender) {
Memo1->Text = "字符串容量 C++ Builder窗口示例";
string str("0123456789");
str.reserve(12); // 重新分配空间,保留字符数
Memo1->Lines->Add("str=" + ANSIToUnicode(str));
str.resize(8); // 修改字符串:多去少补('a')
Memo1->Lines->Add("str=" + ANSIToUnicode(str));
int size = str.size();
int length = str.length();
int capacity = str.capacity(); // 初值15,每次+16
// capacity: 与resize和reserve都有关
unsigned long maxsize = str.max_size();
// __int64, 2^32=4294967296(4)
Memo1->Lines->Add("size=" + IntToStr(size));
Memo1->Lines->Add("length=" + IntToStr(length));
Memo1->Lines->Add("capacity=" + IntToStr(capacity));
Memo1->Lines->Add("maxsize=" + (UnicodeString)(maxsize));
if (!str.empty())
str.clear(); // 判空与清空
Memo1->Lines->Add("str=" + ANSIToUnicode(str));
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender) {
Memo1->Text = "修改字符串_赋值 C++ Builder窗口示例";
string s1("012345abcdef");
string s2;
s2.assign(s1);
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
s2.assign(s1, 6, 3);
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
s2.assign(s1, 2, s1.npos); // npos表示size_t的最大值
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
s2.assign(5, 'X'); // 填充5个X
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
string::iterator itB = s1.begin(); // 迭代器
string::iterator itE = s1.end();
s2.assign(itB, itE);
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
s2.assign(itB, itE - 2);
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender) {
Memo1->Text = "修改字符串_追加 C++ Builder窗口示例";
string s1("123456");
string s2 = "abcdef";
s1.append(s2);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.append(s2, 2, 3);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.append("ABCDE", 2);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.append("ABCDE", 0, 3);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.append(3, 'X');
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
// ---------追加单个字符----------------------
s1.append(1, 'Y');
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.push_back('Z');
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1 += "W";
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender) {
Memo1->Text = "修改字符串_插入与删除 C++ Builder窗口示例";
string s1("0123456789");
string s2 = "abcd";
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.erase(7);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.erase(3, 2);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s2.insert(2, s1);
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
s2.insert(0, "ABC");
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
s2.insert(3, "幸运骄子");
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
Memo1->Lines->Add("s2_size:" + (UnicodeString)(s2.size()));
cout << s2.insert(4, "Y") << endl;
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2) + "<--乱码");
cout << s2.erase(4, 1) << endl;
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
cout << s2.insert(5, "Y") << endl;
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender) {
Memo1->Text = "修改字符串_替换与交换 C++ Builder窗口示例";
string s1("0123456");
string s2 = "abcdef";
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.replace(2, 3, s2);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.replace(2, 6, s2, 2, 3);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.replace(0, 5, s1, 1, 3);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.replace(1, 2, 5, 'X');
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
string::iterator itB = s1.begin();
string::iterator itE = s1.end();
s1.replace(itB + 1, itE - 4, s2);
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
s1.swap(s2);
Memo1->Lines->Add("s2=" + ANSIToUnicode(s2));
Memo1->Lines->Add("s1=" + ANSIToUnicode(s1));
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button7Click(TObject *Sender) {
Memo1->Text = "字符串操作_C_string C++ Builder窗口示例";
string s("abcdefghij"); // 原string字符串
Memo1->Lines->Add("s:" + ANSIToUnicode(s));
Memo1->Lines->Add("s.length():" + UnicodeString(s.length()));
// data() 操作
const char* d = s.data(); // 去掉const 语法错
cout << "d: " << d << endl;
Memo1->Lines->Add("d:" + ANSIToUnicode(d));
Memo1->Lines->Add("strlen(d):" + UnicodeString(strlen(d)));
// c_str() 操作
const char* cs = s.c_str(); // 去掉const 语法错
Memo1->Lines->Add("cs:" + ANSIToUnicode(cs));
Memo1->Lines->Add("cs[0]:" + UnicodeString(cs[0]));
// cs[0]='b'; //尝试修改数组元素会导致错误
Memo1->Lines->Add("strlen(cs):" + UnicodeString(strlen(cs)));
char buffer[20];
s.copy(buffer, 10);
buffer[0] = 'b'; // 允许修改数组元素
Memo1->Lines->Add("strlen(buffer):" + UnicodeString(strlen(buffer)));
string s2 = "";
for (int i = 0; i < 10; i++) {
s2 += buffer[i];
}
Memo1->Lines->Add("buffer:" + ANSIToUnicode(s2));
}
// ---------------------------------------------------------------------------
void __fastcall TForm1::Button8Click(TObject *Sender) {
Memo1->Text = "字符串操作查找_find() C++ Builder窗口示例";
// 查找单个字符
string str1("Hello Everyone");
Memo1->Lines->Add("str1:" + ANSIToUnicode(str1));
int index;
// index的类型: basic_string <char>::size_type;
index = str1.find('e', 2);
// str1[2]开始找,缺省为0
if (index != string::npos) // npos=-1 串尾
Memo1->Lines->Add("e:" + IntToStr(index));
inde
字符串的综合操作 C++ Builder示例
需积分: 1 27 浏览量
2023-04-30
21:24:02
上传
评论
收藏 90KB ZIP 举报
幸运骄子
- 粉丝: 1
- 资源: 20
最新资源
- pta题库答案c语言之排序4统计工龄.zip
- pta题库答案c语言之树结构7堆中的路径.zip
- pta题库答案c语言之树结构3TreeTraversalsAgain.zip
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈