gpt4 book ai didi

c++ - pygtkscintilla 自动缩进

转载 作者:太空宇宙 更新时间:2023-11-04 14:22:01 25 4
gpt4 key购买 nike

我正在尝试翻译 C++ 代码,但我无法弄清楚“char linebuf[1000]”是什么,是否可以通过某种方式将其翻译成 python 或解释什么是 linebuf。谢谢! :) 取自http://www.scintilla.org/ScintillaUsage.html

if  (ch  ==  '\r'  ||  ch  ==  '\n')  {
char linebuf[1000];
int curLine = GetCurrentLineNumber();
int lineLength = SendEditor(SCI_LINELENGTH, curLine);
//Platform::DebugPrintf("[CR] %d len = %d\n", curLine, lineLength);
if (curLine > 0 && lineLength <= 2) {
int prevLineLength = SendEditor(SCI_LINELENGTH, curLine - 1);
if (prevLineLength < sizeof(linebuf)) {
WORD buflen = sizeof(linebuf);
memcpy(linebuf, &buflen, sizeof(buflen));
SendEditor(EM_GETLINE, curLine - 1,
reinterpret_cast<LPARAM>(static_cast<char *>(linebuf)));
linebuf[prevLineLength] = '\0';
for (int pos = 0; linebuf[pos]; pos++) {
if (linebuf[pos] != ' ' && linebuf[pos] != '\t')
linebuf[pos] = '\0';
}
SendEditor(EM_REPLACESEL, 0, reinterpret_cast<LPARAM>(static_cast<char *>(linebuf)));
}
}

最佳答案

它是一行输入文本的缓冲区,类型为 char[1000],即 1000 个 char 元素的数组(实际上是 bytes ,因为 C++ 是基于 C 的,而 C 又早于字符编码的整个概念。

如果我们真的想要算法的直译,最接近 Python 的可能是 array.array('B', [0]*1000)。然而,这会初始化 Python 数组,而 C++ 数组是未初始化的——在 C++ 中确实没有办法跳过该初始化;它只是保留空间,而不关心那 block 内存中已经有什么。

关于c++ - pygtkscintilla 自动缩进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6769068/

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