質問編集履歴

2

整理

2020/09/24 23:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,33 +1,21 @@
1
- 以下のようにCStringを読み書きしているとプログラム終了時にエラーになってしまいます。
1
+ 以下のようにstreamで読み書きしているとプログラム終了時にエラーになってしまいます。このエラーを出ないようにしたいのですが、よく分からず。
2
-
3
- このエラーを出ないようにしたいのですが、よく分からず。
4
-
5
-
6
-
7
- ※他の入出力方法を求めているわけではないです。
8
2
 
9
3
 
10
4
 
11
5
  ```c++
12
6
 
13
- CString w_str("文字");
7
+ CString w_str("文字");
14
8
 
15
9
  CString r_str;
16
10
 
17
- std::stringstream st;
11
+ stringstream st;
18
12
 
19
- std::iostream& io(st);
13
+ iostream io(st);
20
14
 
21
15
  int size = w_str.GetLength() * sizeof(TCHAR);
22
16
 
23
- io.write((const char*)&w_str, size);
17
+ io.write(w_str.GetString(), size);
24
18
 
25
- io.read((char*)&r_str, size);
19
+ io.read((const*)&r_str, size);
26
20
 
27
21
  ```
28
-
29
-
30
-
31
- **エラー内容**
32
-
33
- ![イメージ説明](3d45769bc56c226f94f70b65a463951a.png)

1

コード整理

2020/09/24 23:33

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,6 @@
1
- 以下のようにCStringをstringstreamに読み書きしているとプログラム終了時にエラーになってしまいます。
1
+ 以下のようにCStringを読み書きしているとプログラム終了時にエラーになってしまいます。
2
2
 
3
3
  このエラーを出ないようにしたいのですが、よく分からず。
4
-
5
- おそらく、i_base.readのr_strが原因だと思うのですが、
6
4
 
7
5
 
8
6
 
@@ -12,49 +10,19 @@
12
10
 
13
11
  ```c++
14
12
 
15
- #include <atlstr.h>
13
+ CString w_str("文字列");
16
14
 
17
- #include <sstream>
15
+ CString r_str;
18
16
 
19
- #include <iostream>
17
+ std::stringstream st;
20
18
 
19
+ std::iostream& io(st);
21
20
 
21
+ int size = w_str.GetLength() * sizeof(TCHAR);
22
22
 
23
- int main()
23
+ io.write((const char*)&w_str, size);
24
24
 
25
- {
26
-
27
- CString w_str("文字列");
28
-
29
- CString r_str;
30
-
31
- int size = w_str.GetLength() * sizeof(TCHAR);
32
-
33
- r_str.GetBuffer(size);
34
-
35
-
36
-
37
- std::stringstream s;
38
-
39
- std::ostream& os(s);
40
-
41
- os.write((const char*)&w_str, size);
42
-
43
-
44
-
45
- std::istream& is(s);
46
-
47
- is.read((char*)&r_str, size);
25
+ io.read((char*)&r_str, size);
48
-
49
-
50
-
51
- r_str.ReleaseBuffer();
52
-
53
-
54
-
55
- return 0;
56
-
57
- }
58
26
 
59
27
  ```
60
28