astyle格式化多行<<

mar*_*h44 6 c++ coding-style

我正在使用astyle,这对于将标准样式应用于现有代码非常有用.但是我注意到它遇到这个时:

ostringstream myStream;
myStream << 1
         << 2;
Run Code Online (Sandbox Code Playgroud)

它重新格式化为:

ostringstream myStream;
myStream << 1
<< 2;
Run Code Online (Sandbox Code Playgroud)

这是我的选项文件:(版本1.23)

--indent=spaces
--brackets=break
--indent-switches
--indent-namespaces
--min-conditional-indent=4
--break-closing-brackets
--pad-paren-in
--unpad-paren
--convert-tabs
Run Code Online (Sandbox Code Playgroud)

有没有办法让它排在下一行的"<<"上?

编辑:

我还尝试使用以下文件(test.cpp)的1.22版:

void main()
{
    ostringstream myStream;
    myStream << 1
             << 2;
}
Run Code Online (Sandbox Code Playgroud)

使用以下选项(format.txt):

--indent=spaces
--brackets=break-closing
--indent-switches
--indent-namespaces
--min-conditional-indent=4
--pad=paren-in
--unpad=paren
--convert-tabs
Run Code Online (Sandbox Code Playgroud)

和以下命令行:

astyle --options = format.txt test.cpp

产生了这个:

void main()
{
    ostringstream myStream;
    myStream << 1
    << 2;
}
Run Code Online (Sandbox Code Playgroud)

Cat*_*kul 8

最后的结论是这是一个错误 见底

我试图复制你的问题并且无法得到你正在谈论的行为(OP问题更新否定了这一点)

编辑:(删除要更新的内容)

参数名称在1.22和1.23之间变化.

如果两者都没有解决您的问题,请尝试上传更多代码作为示例,或者尝试仅使用您在此处粘贴的代码来复制问题.(由OP完成)

我还发现选项的顺序似乎偶尔会有所不同.例如:

astyle --indent=tab --style=ansi test.cpp
Run Code Online (Sandbox Code Playgroud)

是不一样的:

astyle --style=ansi --indent=tab test.cpp
Run Code Online (Sandbox Code Playgroud)

指定"--style = ansi"秒有效地否定了"--indent = tab".

如果这可能是你的问题,我不会感到惊讶.

...但是在玩了20分钟之后,我确信这是一个风格错误.

编辑以包含错误的链接:错误谢谢Markh44