![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.4ベストアンサー
- 回答日時:
ごめんなさい、回答no.2で嘘を書いてました・・・ご指摘のとおり、Tokenizeやstrtokではお望みのことはできません。
やはり自前で\tを探して切るしかないようですね。といっても難しくはありませんが。
CString s("aaa\tbbb\tccc");
CString a, b, c;
int idx;
idx = s.Find("\t"); // \tを探す
a = s.Left(idx); // \tの左側を取る
s = s.Mid(idx + 1); // \tの右側だけ残す
idx = s.Find("\t"); // \tを探す
b = s.Left(idx); // \tの左側を取る
s = s.Mid(idx + 1); // \tの右側だけ残す
c = s; // 最後は\tを探す必要なし
テストランしてませんが、こんな感じでできるかと。
No.3
- 回答日時:
i0 ストリームを使います。
1行まるまる読めます。
ヘッダーファイルは足りなかったら
適当に読み込んでください。
#include "io.h"
char user1[64];
char user2[64];
ifstream ifs("user.txt");//テキストファイルです。
ifs.getline(user1, 63);
ifs.getline(user2, 63);
ifs.close();
こんな感じです。
この回答への補足
すいません。
質問の仕方が悪かったです。
回答No.2に対する補足のように、
読み込んだ行を、AA, BB, CCのように
それぞれの項目に入力する方法を
お願いします。
No.2
- 回答日時:
なるほど、sscanfを使って試してみて、空項目があるとうまく読めなかったわけですね。
(ちなみに、補足のプログラムではsscanfの書式指定文字列で区切りの\tが抜けてますよね。)MFCのCStringクラスを使ってよいのであれば、Visual C++ .NET以降をお使いであればCStringクラスにあるTokenizeを使ってみましょう。ヘルプにあるサンプルを見れば、すぐに使い方が分かると思います。
Visual C++ 6.0の場合はCString::Tokenizeがないので、strtokを使うことになるでしょうか。こちらもヘルプにサンプルがあります。
この回答への補足
Visual C++ 6.0使用しています。
質問の2行目だけを考えて、strtokを使用してみましたが、うまく行きませんでした。
アドバイス、よろしくお願いします。
#include <string.h>
#include <stdio.h>
char string[] = "erts\t\t555";
char seps[] = "\t";
char *AA, *BB, *CC;
void main( void )
{
printf( "%s\n:\n", string );
AA = strtok( string, seps );
printf( "AA = %s\n", AA );
BB = strtok( NULL, seps );
printf( "BB = %s\n", BB );
CC = strtok( NULL, seps );
printf( "CC = %s\n", CC );
}
結果
rts 555
:
AA = erts
BB = 555
CC = (null)
No.1
- 回答日時:
例示の2行目、2列目のような空項目が存在しないとすれば、読み込み方は分かるのですね。
その場合はどうやって読み込ませますか? 補足にでも書いてみてください。
そのプログラムを叩き台にすれば回答も付きやすいと思います。
この回答への補足
早速の回答ありがとうございます。
読み込ませ方ですが、スペース文字も入っている場合があるので、以下のような感じです。
FILE* fp = fopen(data.txt, "r");
char buf[256];
CString sBuf;
while(fgets(buf, 256, fp))
{
sBuf = buf;
sBuf.Remove('\n');
sscanf(sBuf, "%[^\t]%[^\t]%[^\r]", AA, BB, CC);
}
fclose(fp);
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- Excel(エクセル) エクセルのワークシートを簡単に別ファイルにする方法は? 5 2023/01/11 14:50
- 楽器・演奏 TAB譜について 5 2023/04/18 19:52
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/06 13:01
- マウス・キーボード Tabキーとテンキーが右側にあるワイヤレスキーボード を探しています。 仕事上数字を入力することが多 3 2022/09/22 21:13
- その他(パソコン・スマホ・電化製品) Switch スマートフォンへ送る できない 1 2023/04/01 22:57
- モニター・ディスプレイ Win11マルチディスプレイでの異なる仮想デスクトップの表示 3 2023/02/01 10:02
- フリーソフト AutoHotKey 「Tabを押し続ける → 右クリックを押し続ける」は出来る?? 2 2023/05/05 14:36
- タブレット lavie tab e 10fhd2タブレット機種だと思うんですがHuy for NEC LAVIE 1 2022/12/16 07:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
atoi( ) の反対をやりたい
-
'const char *' 型は 'char *' ...
-
double型の値をchar配列に変換...
-
charでの計算?
-
TCP/IP通信型大文字・小文字変...
-
ネットワークにつながっている...
-
csvファイルからの読み込みがス...
-
C言語で、入力された、文字列を...
-
RGB→YUV変換のプログラム
-
C言語です
-
3桁区切(コンマ)記号をつけ...
-
空の文字が含まれているファイ...
-
VOID型をSTRUCTのように
-
文字列中からある文字列とある...
-
C言語のfor文です。 繰り返しの...
-
switch文で文字を比較すること...
-
C言語の質問です
-
javaでunsignedは使えないので...
-
文字列の比較について
-
カラー画像からグレースケール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fgetsなどのときのstdinのバッ...
-
C言語のfor文です。 繰り返しの...
-
テキストデータをそのままバイ...
-
charでの計算?
-
文字列から空白を取り除きたい...
-
charからLPTSTRへの変換方法
-
atoi( ) の反対をやりたい
-
2曲同時再生するにはどうした...
-
C言語の入力した文字を反転させ...
-
配列をnビットシフトする
-
3桁区切(コンマ)記号をつけ...
-
int main()の・・・
-
型変換
-
CStringをwchar_tに変換したい
-
'const char *' 型は 'char *' ...
-
間接操作のレベルとは
-
double型の値をchar配列に変換...
-
絶対パスからのファイル名の切...
-
switch文で文字を比較すること...
-
c++ 文字列を入力して、一文字...
おすすめ情報