- ベストアンサー
C言語での文字列取得についてです。
いつもお世話になっております。 例えば、"AAA=C:\aabbcc\ddd"のような文字列があります。C言語だと、この文字列の"C:\aabbcc\"部分だけ抜き出す方法がわかりません。 すいませんが、教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
今時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でやりました
その他の回答 (2)
- A__
- ベストアンサー率47% (22/46)
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; } }
お礼
ご回答ありがとうございます。 やり方が理解できました。
- liar_adan
- ベストアンサー率48% (730/1515)
問題の処理だと 「左から'='文字を探す(strchr()でできる)」 「右から'\'文字を探す(strrchr()でできる)」 「その二つの間の文字列を抜き出す(strncpy()でできる)」 で可能ですが、 一般的にどういう規則で文字列をとりだすのかがわからないので、 これ以上は言えません。 複雑な規則なら「正規表現ライブラリ」というのを使う手もあるのですが…。 いずれにせよ、「どういう規則を使い、どういうデータを得たいか」 によって大きく異なります。
お礼
ご回答ありがとうございます。 やりたい処理ができました。
お礼
ご回答ありがとうございました。 頂戴したサンプルでやりたい処理ができました。