C++基础用法——size()、length()

本文介绍了C++中的length()、size()和sizeof()三个函数的使用。length()用于获取字符串长度,size()不仅适用于字符串,还可用于获取vector的长度。sizeof()则用于计算对象在内存中占用的空间,包括数组和指针。同时,文章还补充了不同数据类型在C++中的内存占用情况。

一、length()函数

C++中length()函数只能用来获取字符串长度。

string str = "ADAS";
int len = str.length();

其中len = 4

二、size()函数

C++中size()函数除了跟length()函数一样可以获取字符串长度之外,还可以获取vector类型的长度。

string str = "ADAS";
vector < int> num(10,5)

int lenstr = str.size();
int lenvec = num.size();

其中lenstr = 4; lenvec = 10

三、sizeof()函数

sizeof() 用于获取对象所占内存空间大小

char c[] = "ADAS";
char* cc = c;
char cn[40] = "ADAS";
int a[] = {1,2,3,4,5,6};
int* aa = a;
cout << sizeof(c) << sizeof(cc) << sizeof(cc) << sizeof(cn);
cout << sizeof(a) << sizeof(aa) << sizeof(aa);

结果输出:

sizeof(c) = 5 //c是数组,计算到'\0'位置,结果为4 * 1+1=7
sizeof(cc) = 8 //cc为指针类型,大小为8
sizeof(*cc) = 1 //*cc指向c的第一个字符,大小为1
sizeof(cn) = 40 //开辟40个char空间,大小为40 * 1=40
sizeof(a) = 24 //a是数组,但不需计算到'\0',结果为6 * 4=24
sizeof(aa) = 8 //aa为指针类型,大小为8
sizeof(*aa) = 4 //*aa指向a的第一个数字,大小为4

知识补充—各种数据类型在C++中的内存占用情况

Alt

对于零基础学习者,以下是几种使用C/C++实现统计单词个数的方法: ### 统计文件中单词个数(C语言实现) 此方法用于统计文件中的单词个数。代码会打开指定文件,逐个字符读取,根据分隔符判断单词边界并计数。 ```c #include <stdio.h> #define IN 0 #define OUT 1 #define INIT OUT int countword(char * filename) { int status = INIT; int res = 0; if(filename == NULL) return -1; FILE * fp = fopen(filename,"r"); if(fp == NULL) return -1; char ch; while((ch = fgetc(fp)) != EOF) { if('\n' == ch || '\t' == ch || ' ' == ch || ',' == ch || '.' == ch || '!' == ch || '\'' == ch || '\"' == ch || '\r' == ch) { status = OUT; } else if(status == OUT) { status = IN; res++; } } return res; } int main(int argc,char *argv[]) { if(argc < 2) return -1; printf("the word is %d\n",countword(argv[1])); return 0; } ``` ### 统计控制台输入单词个数(C++实现) 该方法允许用户在控制台输入多个单词,通过判断输入是否结束来统计单词个数和字符总长度。 ```cpp #include <iostream> #include <Windows.h> #include <string> using namespace std; int main(void) { string name; int count = 0; int length = 0; cout << "请输入多个单词:" << endl; while (1) { // 设置当遇到结束符时(EOF)时跳出循环 // C++,输入控制台的结束符(Ctrl+Z),返回值为0 if (cin >> name) { count++; length += name.size(); } else { break; } } cout << "一共输入" << count << "个单词" << length << "个字符" << endl; return 0; } ``` ### 统计长字符串中特定单词出现次数(C++实现) 此方法用于在一个长字符串中统计特定单词出现的次数,并记录该单词第一次出现的位置。 ```cpp #include <iostream> #include <string> using namespace std; int main() { string c; // 要匹配的字符串 string s; // 待匹配的长字符串 cin >> c; getchar(); // 把\n从缓冲区取出,防止getline直接跳过 getline(cin, s); // 读取一行待匹配的长字符串 // 这俩循环是将俩字符串都统一改成全小写 for (int i = 0; i < c.length(); i++) { c[i] = tolower(c[i]); } for (int i = 0; i < s.length(); i++) { s[i] = tolower(s[i]); } // 都各自在前后加一个空格 c = " " + c + " "; s = " " + s + " "; // 先find一下有没有 if (s.find(c) == string::npos) { cout << -1; // 没有就直接输出了 } else { // 有的话就开始找 int firstPos = s.find(c); // 记录第一次出现的位置 int pos = firstPos; int cnt = 0; // 统计完全匹配次数 while (pos!=string::npos) { cnt++; pos = s.find(c, pos + 1); } cout << cnt << " " << firstPos; } return 0; } ```
评论 8
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值