STL string::findで見つからなかった時の
書式を教えて下さい。

<-----ソース start------->
#define UNCODE
#define _UNCODE

#pragma warning( push,3 )
#pragma warning( disable : 4786 ) // 識別子が '255' 文字に切り捨
#include <iostream>
#include <string>
#include <vector>
#pragma warning( pop )
#pragma warning( disable : 4514 ) // 参照されていないインライン関数は削除
#pragma warning( disable : 4786 ) // 識別子が '255' 文字に切り捨

int wmain(int iArgC, wchar_t* ArgV[], wchar_t* EnvP[])
{
 setlocale( LC_ALL, "Japanese" );
 std::vector<std::wstring> m_sEnv;
 std::vector<std::wstring> m_sArg;
 unsigned long lLoop;
 unsigned long lPos;

 for (lLoop=0; lLoop<(unsigned long)iArgC; lLoop++) {
  m_sArg.push_back(ArgV[lLoop]);
 }
 for (lLoop=0;;lLoop++) {
  if (EnvP[lLoop] == NULL) break;
  m_sEnv.push_back(EnvP[lLoop]);
 }
 for (lLoop=0;lLoop<m_sEnv.size();lLoop++) {
  if ((lPos = m_sEnv.at(lLoop).find(L"jdk1")) != npos) { // *1
   std::wcout << m_sEnv.at(lLoop) << std::endl;
  }
 }
 return 0;
}
<-----ソース end------->

*1 で
error C2065: 'npos' : 定義されていない識別子です。
「std::npos」も試したけどだめだった。

>>以下MSDNより
>>basic_string::npos
>>static const size_type npos = -1;
>>この定数は、size_type 型として表現できる最大の値です。
>>max_size() よりも大きいことが保証されるため、
>>非常に大きな値または特殊なコードとして使用できます。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

最近の STL は良く知らないんですけど、npos は



・std::wstring::npos
・std::basic_string::npos

のどちらかだと思います。
    • good
    • 0
この回答へのお礼

std::wstring::npos で通りました

お礼日時:2001/12/06 16:02

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q紀州地方に敬語が発達しなかったのは?

以前、紀州では歴史的な背景から敬語が発達しなかった為、今でも和歌山県では敬語があまり使われていないと聞いた事があります。これが本当だとすれば、どういう背景によるものなのでしょうか?ご存知の方おられましたら、お願い致します。

Aベストアンサー

紀州北部在住者です。

敬語が発達しなかったのは言葉の語尾に「のし」言葉があったからだと↓のサイトには記載されています。

それが本当かどうかの議論は避けますが、確かに昔の紀州人は「そうやのし」(そうですね。)などの「のし」言葉を多用していました。(現代人はあまり使いませんが…。)

その「のし」には敬語的意味合いが含まれていて、敬語が発達しなかったと言うより、既に敬語として「のし」言葉が存在しており、それが現在の言葉遣いになってから殆ど使われなくなった為に、それに代わる敬語が生まれなかったように思います。

あくまでも私の推測の域を出ない回答ですが、今の和歌山人はちゃんと敬語を使っていますよ。

参考URL:http://www.nhk.or.jp/a-room/kotoba/45wakayama/45guest02.html

Qstd::cout << p と std::cout << *p の違

std::cout << p と std::cout << *p の違いは?

VC++でコードを書きながらC++を学んでいます。
ポインタで疑問に思ったことがあるので質問させて下さい。

int* p;
int n = 100;
p = &a;

上記のように変数を宣言・代入した場合、
std::cout << p と std::cout << *p のどちらでも"100"と表示されます。
これら二つの違いは何でしょうか?
本来*pとすべきところをpにしてもVC++が気を利かせて
&pのアドレスに入っているデータを表示してくれているということでしょうか?

Aベストアンサー

No.1氏の回答にあるコードを元に答えます。

>この場合&pでもアドレスが表示されると思うのですが、
>「&p」と「p」の違いは何でしょうか?
pはaのアドレス。
&pはpのアドレス。
(「p = &a」では、どこのアドレスを渡しているのか考えてみて下さい)


「&p」と「p」の違いというのが参照とポインタの違いを聞いているのだとしたら、constのポインタ==参照型で良かったと思います。
p = &a; //OK
&a = p; //error
int* const p2 = p;
p2 = &a; //error

Q「じゃなかったっけ?」を敬語に直すとどうなりますか?

「じゃなかったっけ?」を敬語に直すとどうなりますか?

それとちょっと年上くらいの人に使うとしたら、どう言いますか?

たぶん「ではありませんでしたっけ?」だと思うのですが、なんか固いので
大して歳の離れてない人には「じゃありませんでしたっけ?」くらいが丁度いいのかなと思います。
ただ、これもなんとなく不自然な感じがしてしまい、なんかしっくり来ないのですが、
それでもやっぱり「じゃありませんでしたっけ?」ですかね・・・・?
他に何か言い方があれば教えて頂きたいです。

自分的には「してなかったっけ?」なら迷わず「してませんでしたっけ?」なのですが、
たぶん「ありません」という言い方が固く聞こえるんだと思います、さっきの例だと言葉が見つかりません。
なので普段はよく「~だったような気がするんですけど、違いましたっけ?」などという言い方で回避してます。
「ありません」って他に言い方ないんですかね・・・・・・??

大した内容でないのに長くなっちゃいましたが、よろしくお願いします。

Aベストアンサー

「~ではなかったですか?」でしょうかね。
あるいはdore3xさんのおっしゃる「~だったような気がするのですが」
もありかと。「~だったように思います」とか。

気になったのが「…っけ?」って聞き方は、年上でも割と親しい
間柄でしたら気にされないかもしれませんが、ちょっとくだけた印象があります。

「ありません」が固く聞こえるのは、否定のフレーズだからでは?と思いました。
あまり目上の方に否定語はつかい辛いですよね^^;

Qunsigned char SJis[2]からstd::stringに変換

開発環境は VC++ 2008 Express Edition
あるDLLの関数で戻り値としてShiftJISの1文字が格納された

unsigned char SJis[2]

が返され,これを呼び出し側のプログラムで使っている文字列

std::string str

に順に追加していこうと思っています.
そこで,

unsigned char tmpSJis[3];
tmpSJis[0] = SJis[0];
tmpSJis[1] = SJis[1];
tmpSJis[2] = '\0';
str += std::string(tmpCode);

というコードを書いてループさせたのですが,

error C2440: '<function-style-cast>' : 'unsigned char *' から 'std::string' に変換できません。

というエラーが出てしまいうまく変換できません.
これを解決する方法はありませんか?

Aベストアンサー

str.append(SJis + 0, SJis + 2);

で解決しませんか?

Q女性に質問です。初対面で打ち解けられなかった男性は、もう脈なしですか?

口下手だったり、人見知りだったりする男性で、初対面ではほとんど敬語であまり打ち解けられなかった場合、もうその男性とは脈なしでしょうか?

例えば、その男性が他の友達とは付き合いが長く、ものすごく打ち解けていて仲良くしていたとしても、無理でしょうか?

つまり、その男性は何度か交友して仲良くなって打ち解ければ、すごく魅力的な人なわけです。

それとも、やはり初対面でもすぐ打ち解けて、誰とでも仲良くするような男性じゃないとOUTでしょうか?

個人的な印象だと、女性って、時間をかけて仲良くなるようなタイプの男性を気持ち悪がり、出来るなら関わりたくないような感じで、人間としても見てもらえないような気がするのです。

やっぱり、表面的でもいいから誰とでも仲良く接した方がいいということでしょうか?

初対面のシチュエーションは二人きりではないです。

飲み会の席とか、合コンとかでもいいです。

具体的には、

・ずっと敬語
・あまり仲良くない人が多い飲み会の席では、周りが盛り上がっていても、自分が出せないで、おとなしくしている

って感じです。もちろん、仲のいい友達同士だったらタメ口だし、一緒に盛り上がれます。

初対面の人とはすぐには打ち解けないだけです。

口下手だったり、人見知りだったりする男性で、初対面ではほとんど敬語であまり打ち解けられなかった場合、もうその男性とは脈なしでしょうか?

例えば、その男性が他の友達とは付き合いが長く、ものすごく打ち解けていて仲良くしていたとしても、無理でしょうか?

つまり、その男性は何度か交友して仲良くなって打ち解ければ、すごく魅力的な人なわけです。

それとも、やはり初対面でもすぐ打ち解けて、誰とでも仲良くするような男性じゃないとOUTでしょうか?

個人的な印象だと、女性って、時間をか...続きを読む

Aベストアンサー

別にどっちもありです。

人見知りでも敬語でも心配しないでください。

そうですね、その場合は、最低でも笑顔だけはあるように。
しゃべらないわ、うつむいたままだわ、面白いのか退屈なのかわからないようでは誤解されかねないです。

人見知りで壁を作ってたとしても、ときおり笑顔をみせて(私と話していても楽しいんだな)と相手に思ってもらえてたら、大丈夫だと思いますよ。
明るくて気さくな男性も魅力的なんですが、大人しい冷静なとこから入る男性も、結構誠実で素敵?と思いますね私は。

みかけは大事なので、清潔、さわやかを心がけてください。
それだけでも全然違いますよ。
頑張って~!

Qstd::for_eachに、ループカウンタを入れる方法。

表題の通りなのですが、次のようなループのカウンタを呼び出される
配列に入れるにはどうしたらいいのでしょうか?

const int MAX = 100;
int Array[MAX] = {0};
/*
//これと同じことをしたいのですが。。。。
for( int i=0; i<MAX; ++i )
 Array[i] = i;
*/
for_each(Array, Array+MAX, /*ここはどうするのでしょう?*/);

調べてみましたが、めぼしいものがみつかりません。
もともと無理なものなのでしょうか?
ご教授お願いします。環境はVC8です。

Aベストアンサー

 こんばんは。

 関数オブジェクトが一番楽です。

struct CCounter
{
CCounter() : m_iRef(0)
{}

void operator()(int& rVal)
{
rVal = m_iRef++;
}

private:
int m_iRef;
};

static void Print(int iVal)
{
cout << iVal << endl;
}

int main(void)
{
const int MAX = 100;
int Array[MAX] = {0};

std::for_each(Array, Array+MAX, CCounter());
std::for_each(Array, Array+MAX, &::Print);

return 0;
}

Q十年間連絡しなかった幼馴染と再連絡していいの?

私は転勤族の娘(今年二十二歳)です。十歳~十二歳の頃に東京に住んでいたことがあり、親同士が同じ地方出身だったため親の仲がとても良かった家族が数家あり、いつも四家ほど集まって家族ぐるみで遊んでいました。そのいつも遊んでいた家に中のこどもにお兄ちゃんが一人いました。(以下、Yさんと呼びます) Yさんは私より五歳年上で当時は高校生で受験勉強に明け暮れていました。Yさんは当時からとても頭が良く(通っていた進学塾の塾費も免除されていた)、小学生の私にとっては憧れの年上のお兄ちゃんというような存在でした。四家の子供同士で遊んでいましたが、一番年下だった私は年上のみんなの話しにはついていけず、Yさんの家にいっても彼の漫画をもくもくと読んでいただけ、Yさんとの会話らしい会話も少なかったです。

中学校のときに私は東京を離れました。Yさんはそのまま東京で大学に進学しました。今は社会人六年目で東証上場企業でバリバリ働いていると聞きました。

今年私は大学を卒業し、都内で就職したため、東京に出てくることになりました。その際に東京に一人も知人がいないので不安を感じていました。東京にいたときの家族の友人も全員転勤し関東地方を離れ、昔の知り合いでまだ東京でがんばっている人はYさんだけです。

Yさんと連絡をとりたいと思いましたが、彼が当時の私のことを今でも覚えているかどうかすらも分かりませんでした。(当時は年下として年上と遊ぶのは楽しかったけど、年上は年下のことは眼中にない、という印象があったため) そこで親の友人を介してYさんのご両親と連絡をとり、Yさんに連絡してもいいかどうか聞き、Yさんのご両親の承諾を得た上でYさんのメールアドレスを頂き、「お久しぶりです。東京で就職しました。」という内容のメールをYさんに送りました。メールでは初めに「Y~~様」と相手を呼び、会社の上司もしくは先輩に使うような敬語を使いました。

Yさんからは「メール、かたいっすね。w 
あの小さかった~~ももう大学卒業と思うと、時間が経つ早さを改めて実感しています。 東京に来たら食事にでも行きましょう、なにかあったら出来るだけ助けるので、気軽に連絡待ってます」という返事が来ました。

そこで質問ですが、十年間も連絡していなかった年下の子からいきなり連絡がきたら、社会人の皆様はどう思いますか? やっぱり迷惑なのでしょうか? 私にとっては東京での唯一の知人ですが、迷惑は掛けたくないので、連絡は最低限にするべきでしょうか。
また、小さかったころはただいっしょに集まって遊んではしゃいでいましたが、今話すのなら、私は今後も敬語を使うべきですよね?

私は転勤族の娘(今年二十二歳)です。十歳~十二歳の頃に東京に住んでいたことがあり、親同士が同じ地方出身だったため親の仲がとても良かった家族が数家あり、いつも四家ほど集まって家族ぐるみで遊んでいました。そのいつも遊んでいた家に中のこどもにお兄ちゃんが一人いました。(以下、Yさんと呼びます) Yさんは私より五歳年上で当時は高校生で受験勉強に明け暮れていました。Yさんは当時からとても頭が良く(通っていた進学塾の塾費も免除されていた)、小学生の私にとっては憧れの年上のお兄ちゃんという...続きを読む

Aベストアンサー

めっちゃいい人じゃん、Yさん。感じもいいし。

ふつう、迷惑だったら返事しないし。

したとしてもカタイ文章で、ましてや食事へ行こうとか書かないし、気軽に連絡なんて、言わない言わない。

優しい人じゃないですか。嬉しいんじゃないかな。
覚えていてくれて、頼ってきてくれたことが。(^^)

幼なじみなんだから、『私もついに、社会人になったよ!』って、少し砕けた文章でいいんじゃないかな。
敬語でなくても、いいと思うよ。
挨拶はきちんとする程度で、『懐かしいです!』って、普通に話せば。

羨ましい!
僕にもそんな幼なじみの子がいたらなぁ。

めっちゃ可愛がるよ。妹ほしかったんで、めっちゃ大切にする。

仕方がないから、部下の女の子はみんな可愛がってるけど。(^^;

社会人デビュー、おめでとう!

Qstd::stringクラスのc_str()で取得した文字列をいじることは可能ですか?

c++で、以下のようなコードは問題ないでしょうか?

// chrの中身の小文字を大文字にする
void func(char* chr);

std::string str("aaa");
const char* str_p = std.c_str();
func((char*)str_p); ←これは大丈夫ですか?

//このあとstrに対して文字列を追加したりいろいろ処理する。


このようにc_strで取得したconst char*をconstをはずして
強引にいじくることは問題ないでしょうか?

Aベストアンサー

許されていません。
できるかもしれないけど、その結果は保証されません。

Qこんなはずじゃなかったのに。(長文です)

毎日、頭から離れてくれない人がいます。
15歳高校生、34歳の先生のことが気になってしまいました…。(独身で彼女はいないようです)
彼は特に格好いいわけではなく、私服もださかったし(個人的に会ったわけではありません)ひょろっと小柄で、私の好みとはかけ離れています…好み通りの人が好きになるとは限りませんけれど。
ただ、面白いことを言う人間にはすぐになついてしまう私なので、その人に限らずいろんな先生が好きですが…会いたいとか話したいとか思ってたまらなくなるのは、その先生だけなんです。

数人の生徒(いずれも同学年)が海外に研修する機会がありまして、その先生が引率だったんですが。
校外なだけに皆してフレンドリーに接していたため(タメ口なんてザラでした)私もそうしていたんですが、意外に気が合ったり価値観とかそういうものが合うということがわかり、一気にハマってしまいました。
元々大人と話すのが大好きな私は、甘えたくなっていろんな話をしたくなってしまいます…
別れるときも「じゃぁねー」と手をふったら「じゃぁねー」とふりかえしてくれたり、友達から「仲がいい」だの「いいコンビ」だの、女の先生からは「波長が同じ」と言われたり、かなり似た者同士みたいです。

本当に好きになってしまったとは思いませんし、認めたくありません…恋にはいじっぱりな部分もあります。
友達にも言えないしできることなら、この「擬人恋愛」のような感情も、普通に「先生とただ仲良くしたい」という感情に変えたいです。
学校ではたくさん話しをしたいので距離を置くことはできる自信がなくて…どうしたらいいんでしょう。

帰国後に一度学校で会いましたが「勉強頑張ってね。応援する」などと、進学やらなんやらいかにも先生と生徒らしい会話をし、私も敬語漬けで、海外での思い出が懐かしいです。(先生は私の学年を担当していません)
でも、これを通して、進級さえ危ない私が先生の「お気に入り」のような座を獲得できたのかもしれません。

ちなみに、研修中「目が合ってはそらし…」を続けていたので、気持ちが疑われているのではないかと恐いです。
皆さんのお言葉をいただいて、自分に言い聞かせたいと思ってます…こんな私に渇を入れてやってください。否定でも肯定でもいいです。
長文にもかかわらず、ここまで読んでいただきありがとうございました。

毎日、頭から離れてくれない人がいます。
15歳高校生、34歳の先生のことが気になってしまいました…。(独身で彼女はいないようです)
彼は特に格好いいわけではなく、私服もださかったし(個人的に会ったわけではありません)ひょろっと小柄で、私の好みとはかけ離れています…好み通りの人が好きになるとは限りませんけれど。
ただ、面白いことを言う人間にはすぐになついてしまう私なので、その人に限らずいろんな先生が好きですが…会いたいとか話したいとか思ってたまらなくなるのは、その先生だけなんです。...続きを読む

Aベストアンサー

こんばんは。

高校時代に、私も先生のことを好きだったことがあるので、思わず回答させていただくことにしました。
お話を読むと、「こんなはずじゃなかったのに」ということで、後悔のような気持ちがあるのでしょうか?ただ素直になれないのかな?
先生を好きになったって、悪いことじゃないですよ。
自分の理想のタイプじゃないからでしょうか?
本当は仲良くなりたいのにどしたらいいのかわからないのかな?
先生・生徒という立場のせいで戸惑っているのでしょうか。

私の場合は私が17歳、先生が当時30歳、結婚してお子さんもいる方でした。だから、なにをどうこうしたいとかそういう考えは持たなかったけれど、どうやっても片思いの気持ちを抱えて泣いたこともあります。
でも、その先生のおかげで、私は勉強を好きになれて、(先生にある科目を担当してもらっていたのですが)成績も格段に伸びました。先生に会いたい一心で職員室に質問に行ったり、お菓子を作って持っていったりと今思うとずいぶん積極的にがんばったなぁと思います(笑)
受験前には先生も気を使ってくださったようで、特別に1対1で直前指導をしてくれたり、年賀状をくれたりしました。
そんな思い出は私にとっては、10年たった今でもかけがえのない記憶です。

相談者さんも、気持ちのままに、先生を好きになってみても、いいと思います。たくさん話したいならたくさん話してください。先生だって、自分に興味を持ってくれる生徒は、かわいくて仕方ないと思いますよ。
これから好きな人もいろいろ変わっていくと思うけれど、今は目の前にいる先生のことを、精一杯考えているのが、自分にいちばん正直なことになると思いますよ。

こんばんは。

高校時代に、私も先生のことを好きだったことがあるので、思わず回答させていただくことにしました。
お話を読むと、「こんなはずじゃなかったのに」ということで、後悔のような気持ちがあるのでしょうか?ただ素直になれないのかな?
先生を好きになったって、悪いことじゃないですよ。
自分の理想のタイプじゃないからでしょうか?
本当は仲良くなりたいのにどしたらいいのかわからないのかな?
先生・生徒という立場のせいで戸惑っているのでしょうか。

私の場合は私が17歳、先生が...続きを読む

Qstd::lower_boundについて

こんにちは。


std::vector< int* > IntArray;

IntArray.push_back( new int( 0 ) );
IntArray.push_back( new int( 2 ) );
IntArray.push_back( new int( 1 ) );
IntArray.push_back( new int( 6 ) );
IntArray.push_back( new int( 5 ) );
IntArray.push_back( new int( 7 ) );

というint型のポインタが格納されているIntArrayを


bool cmp( const int* lhs, const int* rhs )
{
  return *lhs < *rhs;
}

std::sort( IntArray.begin(), IntArray.end(), cmp );

として並べ替えたとします。

そこで新しく new int( 4 )をソートされた順番を壊さない位置に挿入したいと思いlower_boundを使用しようと思いました。


しかし、lower_boundの使い方がいまいちわかりません。

int *p = new int( 4 );

bool cmp2( const int* lhs, const int* rhs )
{
  return *lhs < *rhs;
}

std::lower_bound(
 IntArray.begin(),
 IntArray.end(),
 p,
 cmp2 );

上記のように使用すればこの場合だと変数pを挿入する位置が返ってくるのでしょうか?
間違えているとしたら、どのように修正すれば変数pを挿入できる位置が返ってくるように書き直すことができるでしょうか?(むしろそういった実装は可能なのでしょうか)

よろしくお願いします。

今回は特殊ケースでの問題ですのでint* pをintに修正する、挿入してから再度ソートする、といったことはなしでお願いします。あくまでもlower_boundで実装する場合のコードについてでよろしくお願いします。


/*
  VisualStudio 2008 academic edition
  Window7 64bit
*/

こんにちは。


std::vector< int* > IntArray;

IntArray.push_back( new int( 0 ) );
IntArray.push_back( new int( 2 ) );
IntArray.push_back( new int( 1 ) );
IntArray.push_back( new int( 6 ) );
IntArray.push_back( new int( 5 ) );
IntArray.push_back( new int( 7 ) );

というint型のポインタが格納されているIntArrayを


bool cmp( const int* lhs, const int* rhs )
{
  return *lhs < *rhs;
}

std::sort( IntArray.begin(), IntArray.end(), cmp );

として並べ替えたとします。

そこで新し...続きを読む

Aベストアンサー

> 上記のように使用すればこの場合だと変数pを挿入する位置が返ってくるのでしょうか?

やってみればわかることかと。

#include <iostream>
#include <algorithm>
#include <vector>

bool cmp( const int* lhs, const int* rhs ) {
  return *lhs < *rhs;
}

int main() {
  std::vector<int*> IntArray;

  IntArray.push_back( new int( 0 ) );
  IntArray.push_back( new int( 2 ) );
  IntArray.push_back( new int( 1 ) );
  IntArray.push_back( new int( 6 ) );
  IntArray.push_back( new int( 5 ) );
  IntArray.push_back( new int( 7 ) );

  std::sort(IntArray.begin(), IntArray.end(), &cmp);
  int* p = new int(4);

  std::vector<int*>::iterator pos
   = std::lower_bound(IntArray.begin(), IntArray.end(), p, &cmp);
  IntArray.insert(pos, p);

  for ( int i = 0; i < IntArray.size(); ++i ) {
   std::cout << *IntArray[i] << std::endl;
  }
}

> 上記のように使用すればこの場合だと変数pを挿入する位置が返ってくるのでしょうか?

やってみればわかることかと。

#include <iostream>
#include <algorithm>
#include <vector>

bool cmp( const int* lhs, const int* rhs ) {
  return *lhs < *rhs;
}

int main() {
  std::vector<int*> IntArray;

  IntArray.push_back( new int( 0 ) );
  IntArray.push_back( new int( 2 ) );
  IntArray.push_back( new int( 1 ) );
  IntArray.push_back( new int( 6 ) );
  IntArray.push_back( ...続きを読む


人気Q&Aランキング

おすすめ情報