Comments (8)
Hi Abdullah,
thank you for your messages. Could you checkout the newest commit and see if it did fix your issues?
The problem was: iterators used to point to byte indices and not codepoint indices: therefore str.end()
may not point to the end of the resulting string at the end of the remove_if(as it might as well be shorter or longer, i.e. contain less/more bytes).
I duplicated the set of iterators for raw (byte-based) and non-raw (codepoint-based) versions. This should fix your issues now :)
Please let me know!
Jakob
from tiny-utf8.
I'll close this for now, please feel free to re-open, if the issue should still persist 😃
from tiny-utf8.
Oh, dang it, you probably wrote me the second before I closed the ticket 😄
I will have a look at it! Thanks for your answer!
from tiny-utf8.
I fixed it again in the latest commit. Thank you for bearing with me ;)
Please let me know, if it works now.
from tiny-utf8.
Works as expected, thanks for the quick response. and this awesome library.
from tiny-utf8.
Thanks for the fix, but there are still some issues.
it is repeating some characters
#include <tinyutf8/tinyutf8.h>
#include <algorithm>
#include <iostream>
int main()
{
tiny_utf8::string str = "!مرحبا !! بكم!";
std::cout << str << std::endl;
str.erase(std::remove_if(str.begin(), str.end(), [](char32_t c) { return c == U'!'; }),
str.end());
std::cout << str << std::endl;
// output is : ممرحبا بببكم!
// should be مرحبا بكم
}
Also here it goes in an infinite loop.
#include <tinyutf8/tinyutf8.h>
#include <algorithm>
#include <iostream>
int main()
{
tiny_utf8::string str = "مرحبا !! بكم!";
std::cout << str << std::endl;
str.erase(std::remove_if(str.begin(), str.end(), [](char32_t c) { return c == U'!'; }),
str.end());
std::cout << str << std::endl;
}
from tiny-utf8.
Hi Jakob
just checked after the changes
for the first code snippet. the there still some duplicate characters and it is not removing the last occurrence of '!'
tiny_utf8::string str = "!!مرحبا !! بكم!";
std::cout << str << std::endl;
str.erase(std::remove_if(str.begin(), str.end(), [](char32_t c) { return c == U'!'; }),
str.end());
std::cout << str << std::endl;
// مرحبا بكمم!
For the second one. it is not hanging any more. but there are still issues with the output. (getting this weird symbol �) and not removing the last occurrence as well
#include <tinyutf8/tinyutf8.h>
#include <algorithm>
#include <iostream>
int main()
{
tiny_utf8::string str = "مرحبا !! بكم!";
std::cout << str << std::endl;
str.erase(std::remove_if(str.begin(), str.end(), [](char32_t c) { return c == U'!'; }),
str.end());
std::cout << str << std::endl;
// مرحبا بكم�!
}
from tiny-utf8.
NICE, happy that it works now! 💪
Thanks for your feedback, I appreciate it!
from tiny-utf8.
Related Issues (20)
- Grapheme cluster HOT 1
- Compilation issue HOT 1
- Empty std::string problem HOT 3
- How to use the bidi algorithm with TinyUTF8? HOT 4
- Warnings when compiling with Clang 9 HOT 3
- Unexpected push_back result HOT 1
- Comparison operator doesn't match std::string HOT 2
- C++20 HOT 2
- GCC < 8: error: 'get_sso_capacity' was not declared in this scope HOT 3
- MSVC x86: error C3861: '_BitScanReverse64': identifier not found HOT 1
- append() method with value_type HOT 5
- incorrect string comparison behaviour after a substr operation HOT 1
- Is it possible to do case-insensitive comparison with the tiny-utf8? HOT 3
- Support for string view? HOT 4
- `cpp_str()` impossible to be used with `u8string` HOT 2
- is it possible to make tiny-utf8 case insensitive? HOT 4
- Tricky to use with MSVC and C++20 HOT 7
- RFC: Introduce raw_size() and make size equal to length.
- Incorrect string size of the constructor of tiny-utf8(not only use LITLEN)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tiny-utf8.