「"」、「'」の扱い

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
wolf

「"」、「'」の扱い

#1

投稿記事 by wolf » 12年前

c++で文字列内にある「"(ダブルクォーテーション)」と「'(シングルクォーテーション)」を文字として取り出したいのですが、うまくいきません。解答をよろしくお願いします。

具体的に
c++ の <string.h> で使用可能な .find() 関数を用いて
文字列 ABC"DER
のなかにある「"」を探索したい

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: 「"」、「'」の扱い

#2

投稿記事 by h2so5 » 12年前

どのようにうまくいかないのか詳しく書いてください。
<string.h>はC++ではなくC言語のヘッダーです。 <string>の間違いでしょうか。

y_wing
記事: 16
登録日時: 12年前

Re: 「"」、「'」の扱い

#3

投稿記事 by y_wing » 12年前

\は重要です~。


char a[]="ABC\"\'DER";
int i=0;
for(;a!='\0';i++)
{
if(a=='\"'||a=='\'')
printf("%c\n",a);
}
最後に編集したユーザー y_wing on 2013年8月09日(金) 15:42 [ 編集 4 回目 ]

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 「"」、「'」の扱い

#4

投稿記事 by みけCAT » 12年前

string.hの.find()関数は知りません。また、gcc4.7.2では実装されていないようです。
std::basic_stringクラスのfind関数でしたら、

コード:

std::string target="ABC\"DER";
int pos=(int)target.find("\"");
で探索できるはずです。
このfind関数は第二引数で探索開始位置を指定できるので、
すべてのダブルクォーテーションとシングルクォーテーションを探索したければ、
見つからなくなるまで見つかった次の文字からもう一度探索すればいいです。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
みけCAT
記事: 6734
登録日時: 15年前
住所: 千葉県
連絡を取る:

Re: 「"」、「'」の扱い

#5

投稿記事 by みけCAT » 12年前

「文字として取り出す」の意味がよくわかりませんが、.find()関数を使う縛りが無ければこんな感じでしょうか?

コード:

void getAllQuotation(char* out,const char* in) {
	for(;*in;in++) {
		if((*in)=='\"' || (*in)=='\"')*(out++)=(*in);
	}
	*out='\0';
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る