※ ChatGPTを利用し、要約された質問です(原文:STL string::findで見つからなかった時)
STL string::findで見つからなかった時の書式を教えて下さい。
このQ&Aのポイント
STLのstring::find関数を使用して文字列を検索する際、見つからなかった場合の書式について教えてください。
また、error C2065: 'npos' : 定義されていない識別子です。というエラーメッセージが表示されます。正しい識別子を使用する方法も教えてください。
basic_string::nposは、size_type型で表現できる最大の値であり、非常に大きな値または特殊なコードとして使用できます。
STL string::findで見つからなかった時
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() よりも大きいことが保証されるため、
>>非常に大きな値または特殊なコードとして使用できます。
お礼
std::wstring::npos で通りました