質問編集履歴

8

修正

2020/10/04 04:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  途中から 0x4 が、 0x04, 0x00と2バイトに。
52
52
 
53
- 最後のstd::string str1に変換する際は、1バイトに戻ってほしいのですが、
53
+ 最後のstd::string strに変換する際は、1バイトに戻ってほしいのですが、
54
54
 
55
55
  ```ここに言語を入力
56
56
 

7

修正

2020/10/04 04:38

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  途中から 0x4 が、 0x04, 0x00と2バイトに。
52
52
 
53
- 最後のstd::string str2に変換する際は、1バイトに戻ってほしいのですが、
53
+ 最後のstd::string str1に変換する際は、1バイトに戻ってほしいのですが、
54
54
 
55
55
  ```ここに言語を入力
56
56
 
@@ -68,12 +68,8 @@
68
68
 
69
69
  char* pref = (char*)cstring.GetBuffer(nByteNum);
70
70
 
71
- std::string str1(pref, pref+nByteNum);
71
+ std::string str(pref, pref+nByteNum);
72
72
 
73
73
 
74
74
 
75
- // string -> CString変換
76
-
77
- std::string str2((char*)cstring.GetBuffer(), nByteNum);
78
-
79
75
  ```

6

追記

2020/10/04 04:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -43,3 +43,37 @@
43
43
  str_a.ReleaseBuffer();
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ コメントを受けて少し前進しました。0以降も取得変換できたものの
50
+
51
+ 途中から 0x4 が、 0x04, 0x00と2バイトに。
52
+
53
+ 最後のstd::string str2に変換する際は、1バイトに戻ってほしいのですが、
54
+
55
+ ```ここに言語を入力
56
+
57
+ char n[] = { 4, 5, 0, 6, 7, };
58
+
59
+ int size = sizeof(n);
60
+
61
+ CString cstring(n, size); // charから直接変換
62
+
63
+ int nByteNum= cstring.GetLength() * sizeof(TCHAR);
64
+
65
+
66
+
67
+ // CString -> string変換
68
+
69
+ char* pref = (char*)cstring.GetBuffer(nByteNum);
70
+
71
+ std::string str1(pref, pref+nByteNum);
72
+
73
+
74
+
75
+ // string -> CString変換
76
+
77
+ std::string str2((char*)cstring.GetBuffer(), nByteNum);
78
+
79
+ ```

5

修正

2020/10/04 04:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```c++
10
10
 
11
- char n[] = { 1, 3, 0, 4, 13, };
11
+ char n[] = { 4, 5, 0, 6, 7, };
12
12
 
13
13
  int size = sizeof(n);
14
14
 

4

修正

2020/10/04 00:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,4 @@
1
- バイナリデータ{ 1, 3, 0, 4, 13, }をCStringにしたいのですが、3までしか変換できません。
1
+ バイナリデータ{ 4, 5, 0, 6, 7, }をCStringにしたいのですが、5までしか変換できません。
2
2
 
3
3
  途中に入っている0のせいだと思うのですが、0も含めて変換したい場合はどうすればいいのでしょうか?
4
4
 

3

修正

2020/10/04 00:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
-   // string -> CString変換
21
+ // string -> CString変換
22
22
 
23
23
  CString str_a;
24
24
 
@@ -26,8 +26,20 @@
26
26
 
27
27
 
28
28
 
29
-   // CString -> string変換
29
+ // CString -> string変換1
30
30
 
31
- std::string str_b{ CW2A{ str_a.GetBuffer(size), CP_UTF8 } };
31
+ std::string str_b{ CW2A{ str_a.GetBuffer(5), CP_UTF8 } };
32
+
33
+
34
+
35
+ // CString -> string変換2
36
+
37
+ std::string str_c{ CW2A{ cstring.GetBuffer(5), CP_UTF8 } };
38
+
39
+
40
+
41
+ cstring.ReleaseBuffer();
42
+
43
+ str_a.ReleaseBuffer();
32
44
 
33
45
  ```

2

修正

2020/10/04 00:32

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- バイナリデータをCStringに変換
1
+ char配列をCStringに変換
test CHANGED
@@ -28,6 +28,6 @@
28
28
 
29
29
    // CString -> string変換
30
30
 
31
- std::string str_b{ CW2A{ str_a, CP_UTF8 } };
31
+ std::string str_b{ CW2A{ str_a.GetBuffer(size), CP_UTF8 } };
32
32
 
33
33
  ```

1

syuusei

2020/10/04 00:28

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
File without changes