回答編集履歴

6

s

2020/06/04 05:06

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -64,7 +64,7 @@
64
64
 
65
65
  ```cpp
66
66
 
67
- std::cout << "aaaa"
67
+ std::cout << "aaaa"
68
68
 
69
69
  << "bbbb" << std::endl;
70
70
 

5

以上

2020/06/04 05:06

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
 
24
24
 
25
- ## 文字列リテラルが2つ連続しない場合
25
+ ## 文字列リテラルが2つ以上連続しない場合
26
26
 
27
27
 
28
28
 
@@ -46,7 +46,7 @@
46
46
 
47
47
 
48
48
 
49
- ## 文字列リテラルが2つ連続する場合
49
+ ## 文字列リテラルが2つ以上連続する場合
50
50
 
51
51
 
52
52
 

4

d

2020/06/04 05:05

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
  ```cpp
42
42
 
43
- std::cout << "aaaaaaaa" << a << "bbbb" << std::endl;
43
+ std::cout << "aaaa" << a << "bbbb" << std::endl;
44
44
 
45
45
  ```
46
46
 

3

a

2020/06/04 05:05

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1 +1,71 @@
1
+ `<<` 演算子で文字列リテラルが2つ連続する場合は改行される仕様 (バグ?) になっているようです。今現在、この挙動を制御するようなパラメータはないようなので、clang-format を使うのであれば、改行されるのは仕方ないと思います。
2
+
3
+
4
+
1
- ---質問内容を勘違いしていたので後で修正します---
5
+ 連続する文字列リテラルは1つに結合すれば、改行されなくなります
6
+
7
+
8
+
9
+ ```diff
10
+
11
+ - std::cout << "aaaa" << "bbbb" << std::endl;
12
+
13
+ + std::cout << "aaaabbbb" << std::endl;
14
+
15
+ ```
16
+
17
+
18
+
19
+ ↓ バグレポート
20
+
21
+ [45018 – A newline is added after a string token if the next 2 tokens are lessless and string](https://bugs.llvm.org/show_bug.cgi?id=45018)
22
+
23
+
24
+
25
+ ## 文字列リテラルが2つ連続しない場合
26
+
27
+
28
+
29
+ ```cpp
30
+
31
+ std::cout << "aaaa" << a << "bbbb" << std::endl;
32
+
33
+ ```
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+ ```cpp
42
+
43
+ std::cout << "aaaaaaaa" << a << "bbbb" << std::endl;
44
+
45
+ ```
46
+
47
+
48
+
49
+ ## 文字列リテラルが2つ連続する場合
50
+
51
+
52
+
53
+ ```cpp
54
+
55
+ std::cout << "aaaa" << "bbbb" << std::endl;
56
+
57
+ ```
58
+
59
+
60
+
61
+
62
+
63
+
64
+
65
+ ```cpp
66
+
67
+ std::cout << "aaaa"
68
+
69
+ << "bbbb" << std::endl;
70
+
71
+ ```

2

d

2020/06/04 05:04

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1 +1 @@
1
- ---質問内容を勘違いしていたので修正します---
1
+ ---質問内容を勘違いしていたので後で修正します---

1

d

2020/06/04 03:54

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1,51 +1 @@
1
- 文字列リテラルが ColumnLimit を超える場合に分割して改行するかどうかを制御したいということでしょうか。だとすると、`BreakStringLiterals: false` にすれば、自動改行はされなくなると思います。
2
-
3
-
4
-
5
- * フォーマット前
6
-
7
-
8
-
9
- ```cpp
10
-
11
- str = "text text text text text text text text text";
12
-
13
- ```
14
-
15
-
16
-
17
- * true: 改行する
18
-
19
- ```cpp
20
-
21
- // BreakStringLiterals: true
22
-
23
- str = "text text text text text "
24
-
25
- "texttext text text";
1
+ ---質問内容を勘違いしていたので修正します---
26
-
27
- ```
28
-
29
-
30
-
31
- * false: 改行しない
32
-
33
-
34
-
35
- ```cpp
36
-
37
- // BreakStringLiterals: false
38
-
39
- str = "text text text text text text text text text";
40
-
41
- ```
42
-
43
-
44
-
45
- ## 参考
46
-
47
-
48
-
49
- 1. [Clang-Format Style Options — Clang 11 documentation](https://clang.llvm.org/docs/ClangFormatStyleOptions.html)
50
-
51
- 1. [clang-format 9 の設定パラメータ まとめ - Pynote](https://www.pynote.info/entry/clang-format-settings#BreakStringLiterals)