• ベストアンサー

C言語での文字列取得についてです。

 いつもお世話になっております。  例えば、"AAA=C:\aabbcc\ddd"のような文字列があります。C言語だと、この文字列の"C:\aabbcc\"部分だけ抜き出す方法がわかりません。  すいませんが、教えてください。  

質問者が選んだベストアンサー

  • ベストアンサー
  • nubou
  • ベストアンサー率22% (116/506)
回答No.2

今時string型を使わないでプログラムを組むのは時間の無駄です これは最近のほとんどのC/C++コンパイラで使えます char s[256]に問題の文字列が入っているとします #include <string> #include <iostream> using namespace std; void main(void) { char s[256]; string str; 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/
keyed
質問者

お礼

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

その他の回答 (2)

  • A__
  • ベストアンサー率47% (22/46)
回答No.3

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;  } }

keyed
質問者

お礼

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

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

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

keyed
質問者

お礼

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

関連するQ&A