比较两个 wstring 时使用迭代器

发布于 2024-12-11 08:08:00 字数 331 浏览 0 评论 0原文

我正在迭代列表和向量。两者都填充了 wstring 。

我需要比较它们指向的两个字符串,并找出“wstring1”是否存在于另一个“wstring2”中。

n 和 k 是两个迭代器。

当我尝试时:

   wcscmp(*n,*k);

它失败了,因为 const wchar t 被预期,如果我正确理解错误消息...

我如何检查 *n = "Hello you Little Fellow" 是否包含 *k="little" ?

大小写并不重要。

PS:我不想使用 BOOST 库。

I am iterating through a list and through a vector. Both are filled with wstring s.

I need to compare the two strings they are pointing at and find out if "wstring1" exists in another "wstring2".

n and k are the two iterators.

When I try:

   wcscmp(*n,*k);

it fails because a const wchar t is ecpected, if I understand the error message right...

How can I check if *n = "Hello you little fellow" contains *k="little" ?

Case does not matter.

PS: I do not want to use the BOOST lib.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

诠释孤独 2024-12-18 08:08:00
std::wstring n = L"Hello you little fello";
std::wstring k = L"little";

if ( n.find(k) != wstring::npos )
{
...
}
std::wstring n = L"Hello you little fello";
std::wstring k = L"little";

if ( n.find(k) != wstring::npos )
{
...
}
酒废 2024-12-18 08:08:00

您可以使用 std::wstringc_str() 方法以 null 结尾的宽字符字符串来访问底层存储。

wcscmp(n->c_str(), k->c_str());

You can use the c_str() method of the std::wstring to access the underlying storage as a null terminated wide-char string.

wcscmp(n->c_str(), k->c_str());
夜血缘 2024-12-18 08:08:00
wstring lowN(*n);
wstring lowK(*k);

std::transform(lowN.begin(), lowN.end(), lowN.begin(), ::tolower); 
std::transform(lowK.begin(), lowK.end(), lowK.begin(), ::tolower); 

if ( wstring::npos != lowN->find(lowK) ) {
    // n contains k
}
wstring lowN(*n);
wstring lowK(*k);

std::transform(lowN.begin(), lowN.end(), lowN.begin(), ::tolower); 
std::transform(lowK.begin(), lowK.end(), lowK.begin(), ::tolower); 

if ( wstring::npos != lowN->find(lowK) ) {
    // n contains k
}
小傻瓜 2024-12-18 08:08:00

我看到两种可能性:

1:使用wstring的本机查找方法:

n->find(*k);

2:如果你想使用wcscmp

wcscmp(n->c_str(),k->c_str());

I see two possibilities:

1: Use the native find method of wstring:

n->find(*k);

2: If you want to use wcscmp

wcscmp(n->c_str(),k->c_str());
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文