質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

234閲覧

XcodeでString型変数の値を参照した際に\0がみえる

kasu813

総合スコア40

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/06/17 00:20

編集2019/06/20 07:17

XcodeでString型の変数の値を参照した際に、最後にヌル文字が見えるものと見えないものがあります。
ヌル文字が見えるほうは"\0"を文字として認識してしまっているのかとおもい、prefixで削ったのですがまだXcode上ではヌル文字が見えます。
ヌル文字が見える時と見えない時で何が違うのでしょうか?
ご教示願います。

---追記--- ライブラリが修正されて”\0”が格納されていない状態の画像
イメージ説明

上記には写っていませんが、deviceIDの最後に”\0”が格納されている状態で、
その他と別の変数にdeviceID.prefix(12)で値を代入しても、別の変数で"\0"が表示上見えている状態でした。
動作としては"\0"が出力されない動きに変わったのに、なぜか表示は変わりませんでした。

まあどうでもいいことなのかもしれませんが、少し気になったもので。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takabosoft

2019/06/17 00:35

そのテキストデータはどのように生成されたものなのでしょうか?(DBやAPIから取ってきたものとかでしょうか?)また、Xcodeで「見える」とは具体的にどういう確認の仕方をしているのかスクショを貼ってもらう事はできますか?
kasu813

2019/06/18 02:10

APIからとってきたもので、文字の最後が"0x00"になっている文字列データです。 "0x00"が不要なのでprefixで削ってもdebugエリアでは"\0"が表示されたままだったので、なんでなのか質問をしました。実際の動作はきちんと"0x00"がない状態で動作します。 スクリーンショットは別途貼り付けたいと思います。
fuzzball

2019/06/18 07:19

>>prefixで削って どのようなコードで削りましたか?
takabosoft

2019/06/18 08:15

APIってJSONですかね? 手元で再現する方法があると回答しやすいのですが・・・
fuzzball

2019/06/20 06:37

”\0”が見えてないのですが?
fuzzball

2019/06/20 07:25

もしかして色々質問しても「ライブラリが修正されてしまったから確認できない」というパターンでしょうか?deviceIDが11文字以下なら質問のような状況になりますが、確認できますか?
fuzzball

2019/06/20 07:26

も一つ、deviceID.prefix(12) ではなくて String(deviceID.prefix(12)) ではないですか?
takabosoft

2019/06/20 07:48

"\0"をどうやって確認したかを提示してください。 「別の変数で"\0"が表示上見えている状態」とやらを画像等で提示してください。
takabosoft

2019/06/20 07:50

あ、もう確認できないというオチですかね。。。
kasu813

2020/01/23 01:03

すいません。。。確認できなくなってしまいました。
guest

回答2

0

自己解決

申し訳ありません。
再現できなくなったため、クローズします。

投稿2020/01/23 01:03

kasu813

総合スコア40

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ヌル文字は文字列の終わりを示すもののようです。
https://www.cc.kyoto-su.ac.jp/~yamada/programming/string.html

C言語では\0の後の文字は出力されないとのことでしたが、Swiftで試してみたところ\0の後の文字も出力されました。

Swift

1var str = "Hello \0World" 2print(str)

Console

1Hello

私が試した限りでは\0がある時とない時に違いはないのかなと思いました。
どんな時に\0が入るのかはわかりませんでした。

投稿2019/06/18 07:00

編集2019/06/18 07:01
harumi

総合スコア407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問