【发布时间】:2017-12-07 07:04:24
【问题描述】:
我有一个问题,我想获取一个从具有多行的函数创建的字符串,我需要在其中获取所有新行分隔符,以便以后在 Python 中进行格式化。
例如:
const char * getInfoLogFunction()
{
static char buffer[4096];
glGetShaderInfoLog(shader, 4096, NULL, buffer);
const char * compileStatus = buffer;
return compileStatus
}
现在 compileStatus 指向一个字符串,例如:
这是一个字符串。
多行。
稍后我需要将 compileStatus 发送到应用程序,该应用程序会将整个字符串放入制表符分隔表的 1 个单元格中。然后,使用 Python,我需要将单行字符串格式化回多行。如果分隔符在字符串中但它们不在,我可以轻松做到这一点。
有没有一种方法可以从 compileStatus 获取字符串并对其进行格式化,以便包含所有分隔符?
我发现了很多隐式创建字符串的示例,例如:
myString = R"xyz(Some String)xyz"
但我找不到格式化由函数生成的 const char * 引用的字符串的方法。
谢谢
【问题讨论】:
-
这感觉就像XY problem。该函数已经返回一个带有换行符的字符串。听起来应用程序在表格中显示字符串时会删除换行符。原始功能对此无能为力。应用程序不应删除换行符,或应记住原始字符串以便在需要时对其进行解析。
-
这也是很糟糕的设计。对该函数的每次调用都会追溯覆盖之前返回的所有字符串,作为副作用。
-
谢谢 Remy 我认为是这样。 Baum 我不知道这是一个设计缺陷吗?在这种情况下,先前返回的字符串并不重要,因为就用户而言,只有最后的编译日志才会被计算在内。用户会编写一个着色器,如果有错误会通知他。
标签: c++ arrays string pointers