標題非常多。如果具有UTF-8字符的標準C++字符串沒有零字節,則掃描會在由其大小定義的字符串末尾終止?相反,如果字符串有一個零字節,掃描在該字節處停止,還是繼續到字符串的全長? 我看過Re2.h文件,它似乎沒有解決這個問題。Re2是否使用字符串大小或空終止?
回答
含有UTF-8字符不容具有std::string
0字節的文本
(只終止)的一部分,因爲UTF-8 doesn't允許0's任何地方。
而且使用給定you're一些C++ 11兼容,一個終止符0是保證
(如果你使用data()
或c_str()
doesn't無所謂。而且數據是原始數據,所以...)。
請參閱http://en.cppreference.com/w/cpp/string/basic_string/data
或標準(21.4.7.1/1等)。
=>的字符串的處理將在0
根據Unicode標準,您的第一句話是錯誤的。 Unicode將代碼點0x0000定義爲控件NULL,並且UTF-8編碼格式指定如何在UTF-8中格式化(作爲單個字節0x00)。 –
當然,'std :: string'或'
正如我在其他評論中所說的,我不明白這個問題。如果你故意將字符串放入字符串中,這將是一個問題。但爲什麼要這樣做...... – deviantfan
到RE2的界面似乎使用std::string
,幾乎 當然意味着它使用開始和 字符串的末尾,和空字符是停止像任何其他字符。 (這些都是用Unicode和UTF-8定義的。)當然,'\ 0'在類別控制字符中,所以它不會與 匹配類似「\ pL」(它匹配信)。但它 應匹配「\ pC」。當然,還有'\u0000'
和其他空字符的表示形式。
- 1. 是否printf終止每個字符串與空字符?
- 2. SQL字符串空終止?
- 3. 空終止字符串
- 4. C字符串空終止
- 5. 如何知道字符串是否爲空終止
- 6. 空終止字符串:使用'\ 0'還是隻有0?
- 7. OCaml re2多行字符串
- 8. 包含空終止符的C串大小
- 9. 儘管字符串有空終止字符,std :: string的長度是否一致?
- 10. C字符串的空終止
- 11. wcscat_s字符串不爲空終止
- 12. JavaScript WebSocket非空終止的字符串
- 13. 雙空終止的字符串
- 14. C:Eclipse/gdb和空終止字符串
- 15. 終止字符串
- 16. C:字符串Concatenation:空終止字符串
- 17. 的strstr()的字符串,它是不是空終止
- 18. 使用remove_if與C空值終止的字符串
- 19. 如何使用printf打印非空終止的字符串?
- 20. 我如何使用空字符串來終止?
- 21. HTMLInputHidden空終止字符
- 22. 終止unicode空字符
- 23. 檢查字符串是否包含a-zA-Z字符或空白或空?
- 24. 什麼是空終止ASCII字符串的正則表達式?
- 25. fgets()總是空終止它返回的字符串嗎?
- 26. Xpages空字符串或空字符串
- 27. Byte'\ x09'終止字符串?
- 28. 終止C++字符串
- 29. 替代字符串終止
- 30. 範圍終止字符串
C++字符串不使用空終止字節,c樣式字符串。請參閱:http://stackoverflow.com/questions/11752705/does-string-contain-null-terminator – EdChum
請顯示一些示例源代碼,以解決您的問題 – vz0
@EdChum:C++ 11字符串* *需要包含\ 0。 http://en.cppreference.com/w/cpp/string/basic_string/data或標準本身也這樣說 – deviantfan