gpt4 book ai didi

C++ 将带\0 的字符串拆分为列表

转载 作者:太空狗 更新时间:2023-10-29 20:36:24 25 4
gpt4 key购买 nike

我想列出逻辑驱动器:

const size_t BUFSIZE = 100;
char buffer[ BUFSIZE ];
memset(buffer,0,BUFSIZE);

//get available drives
DWORD drives = GetLogicalDriveStringsA(BUFSIZE,static_cast<LPSTR>(buffer));

缓冲区然后包含:'C',':','\','0'
The buffer after GetLogicalDriveStringA()
现在我想要一个包含 "C:\""D:\" 等等的列表。因此我尝试了这样的事情:

std::string tmp(buffer,BUFSIZE);//to split this string then
QStringList drivesList = QString::fromStdString(tmp).split("\0");

但是没有用。甚至可以使用分隔符 \0 进行拆分吗?或者有没有办法按长度分割?

最佳答案

String::fromStdString(tmp) 的问题在于它只会从缓冲区中第一个以零结尾的“条目”创建一个字符串,因为这就是标准字符串 有效。这当然是可能的,但您必须自己手动完成。

您可以通过找到第一个零,提取子字符串,然后循环直到找到两个连续的零来完成此操作,执行相同的操作。

伪代码:

current_position = buffer;
while (*current_position != '\0')
{
end_position = current_position + strlen(current_position);
// The text between current_position and end_position is the sub-string
// Extract it and add to list
current_position = end_position + 1;
}

关于C++ 将带\0 的字符串拆分为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38761512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com