CStdioFileについて – 固定ページ 4 – プログラミング – Home

通知
すべてクリア

[解決済] CStdioFileについて

固定ページ 4 / 5

επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

全角文字にstrtok使っちゃダメでしょぉ!
strtokは全角文字を想定して作られていません。
使ったあんたが悪い。


返信引用
いけやん
 いけやん
(@いけやん)
ゲスト
結合: 16年前
投稿: 32
Topic starter  

すいません。上記では、全角になっているのですが

テキストの中はちゃんと半角になっていました。

すいません。記載ミスです。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

...しょーじきわからん。ありえねぇ。
# てか再現できねぇ


返信引用
いけやん
 いけやん
(@いけやん)
ゲスト
結合: 16年前
投稿: 32
Topic starter  

ん・・・?
> 全角文字にstrtok使っちゃダメでしょぉ!
> strtokは全角文字を想定して作られていません。

という事は、
全角の文字列を読み込まそうとするのに、strtokを使っては
ダメという事ですね?


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

> という事は、
> 全角の文字列を読み込まそうとするのに、strtokを使っては
> ダメという事ですね?
通常 ランタイムライブラリーは半角はだめです。
全角用の関数が用意されている場合がありますが、
使ったことないですね。


返信引用
いけやん
 いけやん
(@いけやん)
ゲスト
結合: 16年前
投稿: 32
Topic starter  

> 通常 ランタイムライブラリーは半角はだめです。
C言語の標準なライブラリの事を示す。←ついさっき知りました。

> 通常 ランタイムライブラリーは半角はだめです。

すいません。
上記でちょっと混乱しているのですが、strtok関数はCRT(ランタイムライブラリ)
から外れるって事ですか?

> 全角文字にstrtok使っちゃダメでしょぉ!
 ↑これをみる限りstrtok関数は半角しか使ってはいけないって事ですよね?

> 通常 ランタイムライブラリーは半角はだめです。
 ↑全角しかダメって事ですよね?

「このふたつから、strtokはCRTではなく半角読込に使って
 CRTで用意されている全角読込関数を使う」
という解釈でいいんですか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

ここまできたらいいかげんマニュアルを読め。
http://msdn.microsoft.com/ja-jp/library/2c8d19sb(VS.80).aspx


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

>> 通常 ランタイムライブラリーは半角はだめです。
> ↑全角しかダメって事ですよね?
そうですね全角がだめです。

混乱させちゃったようですみません。

>「このふたつから、strtokはCRTではなく半角読込に使って
> CRTで用意されている全角読込関数を使う」
> という解釈でいいんですか?
いいと思います。

区切り文字は、出来る限り半角にしたほうがいいですね。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

> 区切り文字は、出来る限り半角にしたほうがいいですね。

区切り文字は半角必須。そうじゃないと二つの区切り文字とみなされます。
分割対象の文字列も半角必須。全角1文字を半角2文字として扱うため、
場合によっては全角文字の一部が区切り文字と誤認識され、ぶった切られます。


返信引用
いけやん
 いけやん
(@いけやん)
ゲスト
結合: 16年前
投稿: 32
Topic starter  

> ここまできたらいいかげんマニュアルを読め。

一番上に「ランタイム ライブラリ リファレンス」と書いてありました。
επιστημηさん、怒らしたならすいませんでした。

すいません。
また怒らすかもしれませんが
例えば、テキストの中が

---------------------------------
1000-01-01|<<aaaaa>>::あああああ
---------------------------------

という風になっていたなら、

1000-01-01|<<aaaaa>>::まではstrtok等の半角関数で読んで

あああああは別の全角関数で読み込むという風に

処理を分けた方がいいという事ですか?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

...やっぱり読んでない。
そのマニュアル・ページにマルチバイト文字列対応版も載ってたはずだが?


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 21年前
投稿: 830
 

中氏の代わりに突っ込みいれていいっすか?全角ってなにっすか?

MBCS なんぞ捨てて wcstok なら問題ないぢゃんとか
マルチスレッドで strtok 正しく動くんだっけとか
そんな不安要素を抱えたもの使うくらいなら boost::tokenizer に汁とか
正規表現クラスのほうがもっと使いやすいんぢゃないかとか
CString のままでも SpanExcluding とかでなんとかなりそうとか


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

# 中さんがなんと言おうが全角は全角っしょ♪ 通じるからね。

CString::Tokenizeならもっと簡単とか。
そーゆーことも含めてマニュアル読め、と。


返信引用
いけやん
 いけやん
(@いけやん)
ゲスト
結合: 16年前
投稿: 32
Topic starter  

調べ方が足りませんね。すいませんでした。
調べてまた出直してきます。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

> 1000-01-01|<<aaaaa>>::まではstrtok等の半角関数で読んで
> あああああは別の全角関数で読み込むという風に
> 処理を分けた方がいいという事ですか?

全角が混じる可能性があるならば、全角に対応している関数を使おう、
ということです。処理を分ける必要はありません。

CString::Tokenize()かCString::Find()を使って、
自分で切り分けてはいかがでしょう。


返信引用
固定ページ 4 / 5

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました