プロが教える店舗&オフィスのセキュリティ対策術

 いつもお世話になっております。

 例えば、"AAA=C:\aabbcc\ddd"のような文字列があります。C言語だと、この文字列の"C:\aabbcc\"部分だけ抜き出す方法がわかりません。

 すいませんが、教えてください。

 

A 回答 (3件)

今時string型を使わないでプログラムを組むのは時間の無駄です


これは最近のほとんどのC/C++コンパイラで使えます
char s[256]に問題の文字列が入っているとします

#include <string>
#include <iostream>
using namespace std;

void main(void)
{
chars[256];
stringstr;

strcpy(s,"AAA=C:\\aabbcc\\ddd");cout<<s<<endl<<endl;
str=s;
cout<<"前の削除"<<endl;
str.erase(0,str.find('=')+1);
cout<<str<<endl;
cout<<"後の削除"<<endl;
str.erase(str.find_last_of('\\')+1);
cout<<str<<endl;
}

結果:

AAA=C:\aabbcc\ddd

前の削除
C:\aabbcc\ddd
後の削除
C:\aabbcc\

なおリンクの無償ボーランドC++5.5でやりました

参考URL:http://www.borland.co.jp/cppbuilder/freecompiler/
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございました。
頂戴したサンプルでやりたい処理ができました。

お礼日時:2003/02/22 10:57

char str[] = "AAA=C:\\aabbcc\\ddd";


for(int i = 0; i < lstrlen(str); i++){
 if(*(str+i)=='='){
  MessageBox(NULL, str+i+1, "", MB_OK); //C:\\aabbcc\\ddd
  break;
 }
}
    • good
    • 0
この回答へのお礼

 ご回答ありがとうございます。
やり方が理解できました。

お礼日時:2003/02/22 10:59

問題の処理だと


「左から'='文字を探す(strchr()でできる)」
「右から'\'文字を探す(strrchr()でできる)」
「その二つの間の文字列を抜き出す(strncpy()でできる)」
で可能ですが、
一般的にどういう規則で文字列をとりだすのかがわからないので、
これ以上は言えません。
複雑な規則なら「正規表現ライブラリ」というのを使う手もあるのですが…。
いずれにせよ、「どういう規則を使い、どういうデータを得たいか」
によって大きく異なります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
やりたい処理ができました。

お礼日時:2003/02/22 10:55

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