ページ 11

「"」、「'」の扱い

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

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

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

Posted: 2013年8月09日(金) 15:00
by h2so5
どのようにうまくいかないのか詳しく書いてください。
<string.h>はC++ではなくC言語のヘッダーです。 <string>の間違いでしょうか。

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

Posted: 2013年8月09日(金) 15:27
by y_wing
\は重要です~。


char a[]="ABC\"\'DER";
int i=0;
for(;a!='\0';i++)
{
if(a=='\"'||a=='\'')
printf("%c\n",a);
}

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

Posted: 2013年8月09日(金) 15:33
by みけCAT
string.hの.find()関数は知りません。また、gcc4.7.2では実装されていないようです。
std::basic_stringクラスのfind関数でしたら、

コード:

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

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

Posted: 2013年8月09日(金) 15:37
by みけCAT
「文字として取り出す」の意味がよくわかりませんが、.find()関数を使う縛りが無ければこんな感じでしょうか?

コード:

void getAllQuotation(char* out,const char* in) {
	for(;*in;in++) {
		if((*in)=='\"' || (*in)=='\"')*(out++)=(*in);
	}
	*out='\0';
}