アプリ版:「スタンプのみでお礼する」機能のリリースについて

当方はC++を用いております。文字列の部分列にアクセスして、
それを新たに文字列としたいのですが、可能でしょうか?

具体的には、英数字、空白のみからなるレコードがあったとします。
例: 01 po 0979876
7行目から10行目までをとりだします。
0979
これをひとつの文字列とします。

なお、目的は、0979という名のファイルを作ることです。

A 回答 (4件)

問題を分けましょう。



1.別のファイルに記録された文字列を1行ずつ取り出す。
2.その1行の文字列から新しいファイル名を生成する。
3.ファイルを作成/オープンする。


1.の例(ヘッダ省略):
 std::ifstream ifstrm("file.txt");//この辺は適当に按配してください
 std::string line;
 while ( std::getline( ifstrm, line ) )
 {
   //処理
 }

ファイルの1行をlineに読み込んでしまえばあとは回答No.2でいいはずです。
ただし、No.2のサンプルは「6文字目から4文字」を決め打ちしてますから、条件に合わない文字列が出現する可能性とその場合の処理方法についてご自分で検討される必要があります。
    • good
    • 0

意図を誤解していなければですが



この例ですが、必ず、桁は7から10の固定であれば、方法はいろいろあります。簡単にはstrncpyを使う手かな、この場合、ASCIZにするためにNULLを追加します。

char *intext = "01 po 0979876"
char filename[20]

strncpy(intext+6,filename,4);
filename[4]=NULL;

file = fopen(filename,"r");
    • good
    • 0

×行目


○文字目
ですね?
標準ライブラリなら、たとえば、

 std::string str = "01 po 0979876";
 std::string substr1( str, 6, 4 ); //第3引数は部分文字数
//or
 std::string substr2 = str.substr( 6, 4 );

使用しているライブラリによっては別の文字列オブジェクトとそのメソッドが用意されていて、そちらを使ったほうが楽かもしれません。


余談ですが。
まぁ、「可能ですか?」と訊かれれば「可能です」と答えるのがもっとも適切妥当ですね。
コードが知りたければ最初から「どのようなコードを書けば?」と質問すれば回答するほうも手間がかかりません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

>×行目
>○文字目
>ですね?

そのとおりです。

文字列は、実は別のファイルに格納されているものを
一行ずつとりだしてきてファイル生成に用います。
ですので、

>std::string str = "01 po 0979876";

というように最初に与えられているわけではないんです。
配列に格納された文字を連結してファイル名にすればよいと思うのですが、
どのようなコードになるのでしょうか?

お礼日時:2006/04/13 03:16

可能です。

    • good
    • 0
この回答へのお礼

ありがとうございます。
そのコードを教えていただけますか?

お礼日時:2006/04/13 01:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!