“如何搜索”\0“;在二进制文件中? 我有一个.IDX文件,我想用C++读取这个文件。该文件中的所有项都用\0符号分隔。我想得到那个项目清单。我试着实现它如下: while (file.read(buffer, sizeof buffer), chars_read = file.gcount()){ string search_term = "\0"; string contentElement = buffer; string::size_type foundoffset = contentElement.find(search_term); if (foundoffset != string::npos){ //Do something... } //code continue here. ..... } 但是在C++中,“0”被认为是空的,如果你有C++的经验,请告诉我怎么做。请注意,此idx文件是二进制文件。 谢谢大家!

“如何搜索”\0“;在二进制文件中? 我有一个.IDX文件,我想用C++读取这个文件。该文件中的所有项都用\0符号分隔。我想得到那个项目清单。我试着实现它如下: while (file.read(buffer, sizeof buffer), chars_read = file.gcount()){ string search_term = "\0"; string contentElement = buffer; string::size_type foundoffset = contentElement.find(search_term); if (foundoffset != string::npos){ //Do something... } //code continue here. ..... } 但是在C++中,“0”被认为是空的,如果你有C++的经验,请告诉我怎么做。请注意,此idx文件是二进制文件。 谢谢大家!,c++,C++,不要在二进制文件上使用std::string。如果使用原始字符数组,请在其中查找,例如使用std::find 例如: const char* end = buffer + chars_read; const char* ptr = std::find(buffer, end, '\0'); if(ptr == end) { // not found } else { // ptr points to null character } 不要在二进制文件上使用std::strin

不要在二进制文件上使用
std::string
。如果使用原始字符数组,请在其中查找,例如使用
std::find

例如:

const char* end = buffer + chars_read;
const char* ptr = std::find(buffer, end, '\0');

if(ptr == end) {
    // not found
}
else {
    // ptr points to null character
}

不要在二进制文件上使用
std::string
。如果使用原始字符数组,请在其中查找,例如使用
std::find

例如:

const char* end = buffer + chars_read;
const char* ptr = std::find(buffer, end, '\0');

if(ptr == end) {
    // not found
}
else {
    // ptr points to null character
}

如果
buffer
是字符数组(例如
char buffer[…]
),则
contentElement
字符串的构造将仅在
buffer
中的
'\0'
之前读取

但是,有一种方法允许您使用长度设置字符串的内容,如果包含的字符串可以包含嵌入的终止符字符,则应使用该方法:

std::string contentElement(buffer, chars_read);

尽管出于您的目的,我建议您远离
std::string
,直接在缓冲区中搜索。例如,

如果
buffer
是字符数组(例如
char buffer[…]
),则
contentElement
字符串的构造将仅在
buffer
中的
'\0'
之前读取

但是,有一种方法允许您使用长度设置字符串的内容,如果包含的字符串可以包含嵌入的终止符字符,则应使用该方法:

std::string contentElement(buffer, chars_read);

尽管出于您的目的,我建议您远离
std::string
,直接在缓冲区中搜索。例如。

您能告诉我如何将文本从开头提取到上面的指针ptr吗。idx文件也有一个元素的格式:字\0-4字节数-4字节数(\0是结束一个字的符号,一个数字有4个字节,然后是另一个数字有4个字节)。你能告诉我如何在那个二进制文件中得到单词和数字吗?非常感谢!我解决了这个问题。很抱歉问了这么简单的问题!我是C++开发新手,你能告诉我如何从开头提取文本到上面的指针ptr吗。idx文件也有一个元素的格式:字\0-4字节数-4字节数(\0是结束一个字的符号,一个数字有4个字节,然后是另一个数字有4个字节)。你能告诉我如何在那个二进制文件中得到单词和数字吗?非常感谢!我解决了这个问题。很抱歉问了这么简单的问题!我是一个开发C++的新手