“如何搜索”\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++的新手