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

通知
すべてクリア

[解決済] CStdioFileについて

固定ページ 5 / 5

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

VC++6 の MFC4.2 の CString には Tokenize がないんだよねー
だから SpanExcluding を例に挙げといたんだが

SpanExclude で抽出→Mid で既読部分を削除→TrimLeft で先頭セパレータを削除→
の繰り返しで Tokenize 相当のことは出来そうな気がする
っていうかやってみた(やっつけ:参考にしないでね)

struct cstring_tokenizer {
CString str;
const TCHAR* separators;
cstring_tokenizer(const CString& str0, const TCHAR* sep0) : str(str0),
separators(sep0) {}
CString read_tokenized_string() { // destructive read
CString tmp(str.SpanExcluding(separators));
str=str.Mid(tmp.GetLength());
str.TrimLeft(separators);
return tmp;
}
};

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) {
AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);
CString s(_T(1000-01-01|<<aaaaa>>::表示能力));
cstring_tokenizer tk(s, _T(|<>:\\));
CString t;
for (t=tk.read_tokenized_string(); t.GetLength()>0;
t=tk.read_tokenized_string()) {
std::cout << static_cast<const TCHAR*>(t) << std::endl;
}
return 0;
}


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

> VC++6 の MFC4.2 の CString には Tokenize がないんだよねー

そか、VC6かー... orz
もうね、いいかげんいつまでそんな古いの使ってんだと。


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

うーん、
すべて半角のデータで実行させたらstrtokでうまくいったのですか?


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

半角どころか全角もうまく行ってました。

一部では、
> 全角1文字を半角2文字として扱うため、
> 場合によっては全角文字の一部が区切り文字と誤認識され、ぶった切られます。

これになりました。
ちなみにこの漢字は「掛」ぶった切られました。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ワープレスですみません。

> 基本的な事なら、すいません。
> C++の参考書でも、VC++の勉強になるのですか?

VC++の本はC++言語の文法は理解していること前提で書いてある事が
殆どですので、その前提が崩れるとVC++の本を読んでも理解できない部分が
多々出てきます。
C++言語を知らないとMFCは使いこなせないです。
特にクラスの派生やら仮想関数周りは知っておく必要があると思います。
なので、MFCを使ったプログラミングをする前にC++の勉強をしておく方が
良いのでは無いかと言う提案です。
MFCとC++言語の勉強を同時にやるよりも先にC++言語の知識をきちんと
付けた方がMFCもすんなり理解できますし、お得だと思います。

> ふと今思ったのですが、[cout <<]←ってC++,VC++で使えるのですか?
使えるはずですよ。
但し、名前空間の話があるのでその辺まで理解した上で無いと
使えないとかなりそうですけれど。
VC++も結局はC++言語の上で成り立っている開発環境なので
その辺の標準的な部分は同じです。
但し、VC++6.0のコンパイラは最新のC++言語の標準からすると
準拠率が低く、お勧めできる物では有りません。
VC++6.0でないと駄目な理由が無い限りは最新の環境で勉強された方が
よろしいかと思います。
コンパイラもライブラリも最新の物の方が準拠率は高いです。


返信引用
rin
 rin
(@rin)
ゲスト
結合: 18年前
投稿: 112
 

VC++:開発用のソフトの名前
C++:プログラム言語の名前

本来は、同列にあつかうものではないと思う。

#C++/CLIはVC#みたいに別にしてほしいなぁと思う


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

> VC++の本はC++言語の文法は理解していること前提
そうなんですか~。だからC++の勉強必要なんですね。

> VC++6.0でないと駄目な理由が無い限りは最新の環境で勉強された方が
> よろしいかと思います。
> コンパイラもライブラリも最新の物の方が準拠率は高いです

なるほど、できるだけ最新の物でやった方がいいんですか~。
今やっている内容が終わったら検討してみます。
ありがとうございます。

> 本来は、同列にあつかうものではないと思う。
別物なんですか~。一緒みたいに扱った発言あったらすいませんでした。


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

ところで、今、未解決の問題があるのですか?
ないなら解決してこのスレを閉じてはいかがでしょうか。

未解決の問題についても、当初の質問との直接的な関連が小さいようなら、
別スレで質問するのが良いと思います。


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

たいちうさん、ありがとうございます。

そうですねタイトルから、質問がずれてますね。
CStdioFileの使い方についての質問は解決したので、

今残っている、質問は新規スレで質問します。

後、解決したのはBlueさん、επιστημηさん
書いて頂いたサンプルで解決しました。

if ( !fin.Open(aaa.txt, CFile::modeRead, NULL ) )

CStdioFile fInStream(strFileName, CFile::modeRead | CFile::typeText);

みなさん、ありがとうございました。


返信引用
IDO
 IDO
(@IDO)
ゲスト
結合: 16年前
投稿: 1
 

移動
http://www.play21.jp/board/formz.cgi?
action=res&resno=20101&page=&id=dixq&rln=20112


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

返信する

投稿者名

投稿者メールアドレス

タイトル *

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