回答編集履歴
5
打ち消し線追加
test
CHANGED
@@ -74,39 +74,45 @@
|
|
74
74
|
|
75
75
|
### 追記
|
76
76
|
|
77
|
-
writeを用いた
|
78
77
|
|
78
|
+
|
79
|
-
|
79
|
+
下記解説誤った解説の疑いあり(yumetodoさんより)
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
-
|
83
|
+
~~writeを用いた~~
|
84
84
|
|
85
|
-
|
85
|
+
~~一括書き込みを行うコード~~
|
86
|
-
|
87
|
-
abcdefとしか記載されていませんでした。
|
88
86
|
|
89
87
|
|
90
88
|
|
91
|
-
|
89
|
+
~~まず私の環境では元コードをコンパイルして~~
|
92
90
|
|
93
|
-
|
91
|
+
~~実行するとファイルは生成されましたが~~
|
94
92
|
|
95
|
-
vstr[0]を指定しており、
|
96
|
-
|
97
|
-
そのvstr[0]はpstrが格納されています。
|
98
|
-
|
99
|
-
もっと詳しく説明しますとそのpstrの文字aの番地です。
|
100
|
-
|
101
|
-
そしてそのアドレスから6番目のアドレスに終端文字が入っているので
|
102
|
-
|
103
|
-
|
93
|
+
~~abcdefとしか記載されていませんでした。~~
|
104
94
|
|
105
95
|
|
106
96
|
|
107
|
-
そ
|
97
|
+
~~その理由は恐らく~~
|
108
98
|
|
99
|
+
~~元コードではwriteメソッドの第一引数で~~
|
100
|
+
|
101
|
+
~~vstr[0]を指定しており、~~
|
102
|
+
|
103
|
+
~~そのvstr[0]はpstrが格納されています。~~
|
104
|
+
|
105
|
+
~~もっと詳しく説明しますとそのpstrの文字aの番地です。~~
|
106
|
+
|
107
|
+
~~そしてそのアドレスから6番目のアドレスに終端文字が入っているので~~
|
108
|
+
|
109
|
+
~~出力されるファイルにはabcdefしか記載されないということです。~~
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
~~そこで下記のようにメモリ上に一列に終端文字を改行コードに置き換えた~~
|
114
|
+
|
109
|
-
メモリを作ることができればwriteメソッドで一括書き換えできるかと思います。
|
115
|
+
~~メモリを作ることができればwriteメソッドで一括書き換えできるかと思います。~~
|
110
116
|
|
111
117
|
|
112
118
|
|
4
詳しい解説追加
test
CHANGED
@@ -80,6 +80,36 @@
|
|
80
80
|
|
81
81
|
|
82
82
|
|
83
|
+
まず私の環境では元コードをコンパイルして
|
84
|
+
|
85
|
+
実行するとファイルは生成されましたが
|
86
|
+
|
87
|
+
abcdefとしか記載されていませんでした。
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
その理由は恐らく
|
92
|
+
|
93
|
+
元コードではwriteメソッドの第一引数で
|
94
|
+
|
95
|
+
vstr[0]を指定しており、
|
96
|
+
|
97
|
+
そのvstr[0]はpstrが格納されています。
|
98
|
+
|
99
|
+
もっと詳しく説明しますとそのpstrの文字aの番地です。
|
100
|
+
|
101
|
+
そしてそのアドレスから6番目のアドレスに終端文字が入っているので
|
102
|
+
|
103
|
+
出力されるファイルにはabcdefしか記載されないということです。
|
104
|
+
|
105
|
+
|
106
|
+
|
107
|
+
そこで下記のようにメモリ上に一列に終端文字を改行コードに置き換えた
|
108
|
+
|
109
|
+
メモリを作ることができればwriteメソッドで一括書き換えできるかと思います。
|
110
|
+
|
111
|
+
|
112
|
+
|
83
113
|
```c++
|
84
114
|
|
85
115
|
#include <iostream>
|
3
追記コードが短くなるよう修正
test
CHANGED
@@ -124,13 +124,7 @@
|
|
124
124
|
|
125
125
|
|
126
126
|
|
127
|
-
for (const auto& i : vstr)
|
127
|
+
for (const auto& i : vstr)std::cout << i ;
|
128
|
-
|
129
|
-
{
|
130
|
-
|
131
|
-
std::cout << i ;
|
132
|
-
|
133
|
-
}
|
134
128
|
|
135
129
|
|
136
130
|
|
2
writeを用いたコードの追記
test
CHANGED
@@ -69,3 +69,77 @@
|
|
69
69
|
|
70
70
|
|
71
71
|
```
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
### 追記
|
76
|
+
|
77
|
+
writeを用いた
|
78
|
+
|
79
|
+
一括書き込みを行うコード
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
```c++
|
84
|
+
|
85
|
+
#include <iostream>
|
86
|
+
|
87
|
+
#include <fstream>
|
88
|
+
|
89
|
+
#include <vector>
|
90
|
+
|
91
|
+
#include <cstring>
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
int main()
|
96
|
+
|
97
|
+
{
|
98
|
+
|
99
|
+
const char* pstr = "abcdef";
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
// もともとpstrの番地を格納したvectorでしたが
|
104
|
+
|
105
|
+
// a,b,c,d,e,f,\n,a,b,c,d,e,f,\n...と並べたメモリを作成するためchar型を格納するvectorに変更
|
106
|
+
|
107
|
+
std::vector<char> vstr;
|
108
|
+
|
109
|
+
std::fstream outfile;
|
110
|
+
|
111
|
+
|
112
|
+
|
113
|
+
for (int i = 0; 6 > i; ++i){
|
114
|
+
|
115
|
+
for(int j=0; j<std::strlen(pstr); ++j){
|
116
|
+
|
117
|
+
vstr.push_back(pstr[j]);
|
118
|
+
|
119
|
+
}
|
120
|
+
|
121
|
+
vstr.push_back('\n');
|
122
|
+
|
123
|
+
}
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
for (const auto& i : vstr)
|
128
|
+
|
129
|
+
{
|
130
|
+
|
131
|
+
std::cout << i ;
|
132
|
+
|
133
|
+
}
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
outfile.open("./out.txt", std::ios::out);
|
138
|
+
|
139
|
+
outfile.write(&vstr[0], vstr.size());//一括書き込み
|
140
|
+
|
141
|
+
}
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
```
|
1
誤記
test
CHANGED
@@ -58,7 +58,7 @@
|
|
58
58
|
|
59
59
|
outfile.open("./out.txt", std::ios::out);
|
60
60
|
|
61
|
-
for(const auto i:vstr)outfile << i << std::endl;
|
61
|
+
for(const auto& i:vstr)outfile << i << std::endl;
|
62
62
|
|
63
63
|
outfile.close();
|
64
64
|
|