質問するログイン新規登録

回答編集履歴

6

s

2020/06/04 05:06

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -31,6 +31,6 @@
31
31
 
32
32
 
33
33
  ```cpp
34
- std::cout << "aaaa"
34
+ std::cout << "aaaa"
35
35
  << "bbbb" << std::endl;
36
36
  ```

5

以上

2020/06/04 05:06

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -10,7 +10,7 @@
10
10
  ↓ バグレポート
11
11
  [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)
12
12
 
13
- ## 文字列リテラルが2つ連続しない場合
13
+ ## 文字列リテラルが2つ以上連続しない場合
14
14
 
15
15
  ```cpp
16
16
  std::cout << "aaaa" << a << "bbbb" << std::endl;
@@ -22,7 +22,7 @@
22
22
  std::cout << "aaaa" << a << "bbbb" << std::endl;
23
23
  ```
24
24
 
25
- ## 文字列リテラルが2つ連続する場合
25
+ ## 文字列リテラルが2つ以上連続する場合
26
26
 
27
27
  ```cpp
28
28
  std::cout << "aaaa" << "bbbb" << std::endl;

4

d

2020/06/04 05:05

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -19,7 +19,7 @@
19
19
 
20
20
 
21
21
  ```cpp
22
- std::cout << "aaaaaaaa" << a << "bbbb" << std::endl;
22
+ std::cout << "aaaa" << a << "bbbb" << std::endl;
23
23
  ```
24
24
 
25
25
  ## 文字列リテラルが2つ連続する場合

3

a

2020/06/04 05:05

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,1 +1,36 @@
1
+ `<<` 演算子で文字列リテラルが2つ連続する場合は改行される仕様 (バグ?) になっているようです。今現在、この挙動を制御するようなパラメータはないようなので、clang-format を使うのであれば、改行されるのは仕方ないと思います。
2
+
1
- ---質問内容を勘違いしていたので後で修正します---
3
+ 連続する文字列リテラルは1つに結合すれば、改行されなくなります
4
+
5
+ ```diff
6
+ - std::cout << "aaaa" << "bbbb" << std::endl;
7
+ + std::cout << "aaaabbbb" << std::endl;
8
+ ```
9
+
10
+ ↓ バグレポート
11
+ [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)
12
+
13
+ ## 文字列リテラルが2つ連続しない場合
14
+
15
+ ```cpp
16
+ std::cout << "aaaa" << a << "bbbb" << std::endl;
17
+ ```
18
+
19
+
20
+
21
+ ```cpp
22
+ std::cout << "aaaaaaaa" << a << "bbbb" << std::endl;
23
+ ```
24
+
25
+ ## 文字列リテラルが2つ連続する場合
26
+
27
+ ```cpp
28
+ std::cout << "aaaa" << "bbbb" << std::endl;
29
+ ```
30
+
31
+
32
+
33
+ ```cpp
34
+ std::cout << "aaaa"
35
+ << "bbbb" << std::endl;
36
+ ```

2

d

2020/06/04 05:04

投稿

tiitoi
tiitoi

スコア21960

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

1

d

2020/06/04 03:54

投稿

tiitoi
tiitoi

スコア21960

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