宽字符测试

本文详细探讨了C++中字符串的基本操作,包括字符串长度、大小比较、字符查找及子字符串提取,并展示了如何使用字符串流进行输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include<iostream>
#include<string>
using namespace std;


int main()
{
 wstring ws1=L"一二三四五六七八九";
 wstring ws2=L"123456789";
 wstring ws3=L"abcdefghi";
 string a="";
 cout<<sizeof(a)<<" "<<sizeof(ws1)<<endl;
 cout<<"ws1:"<<ws1.length()<<" "<<sizeof(ws1)<<" "<<ws1.size()<<endl;
 cout<<"ws2:"<<ws2.length()<<" "<<sizeof(ws2)<<" "<<ws1.size()<<endl;
 cout<<"ws3:"<<ws3.length()<<" "<<sizeof(ws3)<<" "<<ws1.size()<<endl;
 cout<<sizeof(wchar_t)<<endl;
 string str="一二三四五六七八九";
 size_t found=str.find("五");
 cout<<found<<endl;
 size_t found2=str.find("六");
 cout<<str.capacity()<<endl;
 cout<<ws2.capacity()<<endl;
 cout<<str.substr(found,found2-found)<<endl;
}


8 8

ws1:9 8 9
ws2:9 8 9
ws3:9 8 9
4
12
27
9
在 C++ 中测试宽字符(`wchar_t`)字符串的长度,可以使用标准库中的函数或方法。由于宽字符字符串通常以 `wchar_t*` 类型表示,并且以空字符 `L'\0'` 结尾,因此需要特定的方法来计算其长度。 ### 使用 `wcslen` 函数 C++ 标准库提供了 `wcslen` 函数,用于计算宽字符字符串的长度。该函数定义在 `<cwchar>` 头文件中,接受一个指向宽字符字符串的指针,并返回字符串的有效字符数(不包括结尾的空字符)[^2]。 示例代码: ```cpp #include <iostream> #include <cwchar> int main() { const wchar_t* wstr = L"Hello, 世界"; size_t length = wcslen(wstr); std::wcout << L"宽字符串长度为:" << length << std::endl; return 0; } ``` ### 使用 `std::wstring` 的 `length()` 或 `size()` 方法 如果使用 `std::wstring` 来存储宽字符字符串,可以直接调用 `length()` 或 `size()` 方法获取字符串的长度。这两个方法返回的结果相同,表示字符串中字符的数量(不包括结尾的空字符)[^1]。 示例代码: ```cpp #include <iostream> #include <string> int main() { std::wstring wstr = L"Hello, 世界"; size_t length = wstr.length(); std::wcout << L"宽字符串长度为:" << length << std::endl; return 0; } ``` ### 使用迭代器计算长度 还可以通过迭代器的方式计算宽字符字符串的长度,例如使用 `std::distance` 函数来获取起始和结束迭代器之间的距离。这种方法适用于 `std::wstring` 类型的字符串[^2]。 示例代码: ```cpp #include <iostream> #include <string> #include <iterator> int main() { std::wstring wstr = L"Hello, 世界"; size_t length = std::distance(wstr.begin(), wstr.end()); std::wcout << L"宽字符串长度为:" << length << std::endl; return 0; } ``` ### 注意事项 - 如果处理的是原始宽字符数组(如 `wchar_t[]`),推荐使用 `wcslen`。 - 如果使用 `std::wstring`,则优先使用 `length()` 或 `size()` 方法。 - 迭代器方式适用于 `std::wstring`,但效率略低于直接调用成员方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值