如何从具有嵌入式null的字符数组中提取std :: string

用户名

我有一个已知长度的字符数组,带有嵌入的空值;没有结尾为null。

const char * raw = "text1\0\0text2\0\0\0text3\0more text";

这样做

std::string clean(raw);

仅给我第一个字符串("text1"),但我需要整个原始字符串。

我想要多个字符串。在这种情况下,里面有4个字符串raw.

来自莫斯科的弗拉德

在不知道字符串文字的实际大小的情况下,您将无法执行此任务。如果知道大小,则可以使用构造函数

basic_string(const charT* s, size_type n, const Allocator& a = Allocator());

或相应的方法 assign

在这里,第二个参数指定将在字符串中复制的s的字符数。

如果长度是已知的,那么您可以简单地写

std::string clean( raw, n );

或者

std::string clean;
clean.assign( raw, n );

编辑:当您更改了原始消息后,我将附加我的帖子。您可以按以下方式拆分文字

#include <iostream>
#include <sstream>
#include <string>
#include <vector>

int main()
{
    const char * s = "text1\0\0text2\0\0\0text3\0more text";
    size_t n = 30;
    std::istringstream is( std::string( s, 30 ) );

    std::vector<std::string> v;
    std::string word;
    while ( std::getline( is, word, '\0' ) ) if ( !word.empty() ) v.push_back( word );

    for ( const std::string &s : v ) std::cout << s << std::endl;
}

输出是

text1
text2
text3
more text

如果您有四个不同的字符串,则可以编写

#include <iostream>
#include <sstream>
#include <string>

int main()
{
    const char * s = "text1\0\0text2\0\0\0text3\0more text";
    size_t n = 30;
    std::istringstream is( std::string( s, 30 ) );

    std::string word1, word2, word3, word4;
    while ( std::getline( is, word1, '\0' ) && word1.empty() );
    while ( std::getline( is, word2, '\0' ) && word2.empty() );
    while ( std::getline( is, word3, '\0' ) && word3.empty() );
    while ( std::getline( is, word4, '\0' ) && word4.empty() );

    for ( const std::string &s : { word1, word2, word3, word4 } ) std::cout << s << std::endl;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从 Array<Dictionary<String,String>> 中提取字符串数组的有效方法

来自分类Dev

如何从SVG文件中提取嵌入式图像?

来自分类Dev

如何从Wix刻录安装程序中提取嵌入式有效负载?

来自分类Dev

如何从以模式给定的std :: string中提取单词?

来自分类Dev

如何在Swift中创建嵌入式JSON对象并返回String?

来自分类Dev

使用ffmpeg从具有嵌入式封面的文件中提取视频封面/缩略图

来自分类Dev

如何从String Builder中提取json对象?

来自分类Dev

提示如何从List <string>中提取文本

来自分类Dev

在JSOUP中提取到嵌入式资源的链接的最有效方法

来自分类Dev

在JSOUP中提取到嵌入式资源的链接的最有效方法

来自分类Dev

如何从三星的Motion Photo jpeg文件中提取嵌入式视频

来自分类Dev

从Powerpoint ppt中提取嵌入式字体

来自分类Dev

使用Java从文档中提取嵌入式文件

来自分类Dev

从std :: string提取整数

来自分类Dev

从std :: string提取整数

来自分类Dev

如何查询Mongodb的嵌入式数组

来自分类Dev

如何从Java项目中的所有Java文件中提取所有String?

来自分类Dev

string 和 powershell 从数组中提取用户名

来自分类Dev

如何从带有嵌入式子集字体的pdf中提取文本

来自分类Dev

从std :: string逐字节提取具有偏移量的连续位

来自分类Dev

具有String数组toString()输出的JSONObjcet具有整数值而不是字符串

来自分类Dev

Morphia List <Map <String,Object >>>返回在查找操作中嵌入式元素不是DBObject

来自分类Dev

如何从具有动态值的字符串中提取数组?

来自分类Dev

std :: basic_string是否正式具有隐式生成的move构造函数?

来自分类Dev

std :: basic_string是否正式具有隐式生成的move构造函数?

来自分类Dev

std :: string的指针数组

来自分类Dev

std :: string的指针数组

来自分类Dev

如何遍历String数组中的所有字符

来自分类Dev

Null <std :: string>的问题

Related 相关文章

  1. 1

    从 Array<Dictionary<String,String>> 中提取字符串数组的有效方法

  2. 2

    如何从SVG文件中提取嵌入式图像?

  3. 3

    如何从Wix刻录安装程序中提取嵌入式有效负载?

  4. 4

    如何从以模式给定的std :: string中提取单词?

  5. 5

    如何在Swift中创建嵌入式JSON对象并返回String?

  6. 6

    使用ffmpeg从具有嵌入式封面的文件中提取视频封面/缩略图

  7. 7

    如何从String Builder中提取json对象?

  8. 8

    提示如何从List <string>中提取文本

  9. 9

    在JSOUP中提取到嵌入式资源的链接的最有效方法

  10. 10

    在JSOUP中提取到嵌入式资源的链接的最有效方法

  11. 11

    如何从三星的Motion Photo jpeg文件中提取嵌入式视频

  12. 12

    从Powerpoint ppt中提取嵌入式字体

  13. 13

    使用Java从文档中提取嵌入式文件

  14. 14

    从std :: string提取整数

  15. 15

    从std :: string提取整数

  16. 16

    如何查询Mongodb的嵌入式数组

  17. 17

    如何从Java项目中的所有Java文件中提取所有String?

  18. 18

    string 和 powershell 从数组中提取用户名

  19. 19

    如何从带有嵌入式子集字体的pdf中提取文本

  20. 20

    从std :: string逐字节提取具有偏移量的连续位

  21. 21

    具有String数组toString()输出的JSONObjcet具有整数值而不是字符串

  22. 22

    Morphia List <Map <String,Object >>>返回在查找操作中嵌入式元素不是DBObject

  23. 23

    如何从具有动态值的字符串中提取数组?

  24. 24

    std :: basic_string是否正式具有隐式生成的move构造函数?

  25. 25

    std :: basic_string是否正式具有隐式生成的move构造函数?

  26. 26

    std :: string的指针数组

  27. 27

    std :: string的指针数组

  28. 28

    如何遍历String数组中的所有字符

  29. 29

    Null <std :: string>的问题

热门标签

归档