Microsoft KB Archive/157672

= How to use the basic_string::find_first_of STL functions in Visual C++ =

Article ID: 157672

Article Last Modified on 7/15/2005

-

APPLIES TO

 The Standard C++ Library, when used with:  Microsoft Visual C++ 4.2 Enterprise Edition

 Microsoft Visual C++ 5.0 Enterprise Edition

 Microsoft Visual C++ 6.0 Enterprise Edition

 Microsoft Visual C++ 4.2 Professional Edition</li></ul>

 Microsoft Visual C++ 5.0 Professional Edition</li></ul>

 Microsoft Visual C++ 6.0 Professional Edition</li></ul>

 Microsoft Visual C++ 6.0 Standard Edition</li></ul>

 Microsoft Visual C++ .NET 2002 Standard Edition</li></ul>

 Microsoft Visual C++ .NET 2003 Standard Edition</li></ul> </li></ul>

-

<div class="notice_section">

This article was previously published under Q157672

<div class="notice_section">

<div class="notice_section">

Note Microsoft Visual C++ NET (2002) supported both the managed code model that is provided by the .NET Framework and the unmanaged native Windows code model. The information in this article applies to unmanaged Visual C++ code only.

<div class="summary_section">

SUMMARY
The sample code below illustrates how to use the basic_string::find_first_of STL function in Visual C++.

<div class="moreinformation_section">

Prototype
size_type find_first_of(const basic_string& _X, size_type iPos = 0); size_type find_first_of(const element_type *_S, size_type iPos,

size_type cElementsIn_S);

size_type find_first_of(const element_type *_S, size_type iPos = 0); size_type find_first_of(element_type _C, size_type iPos = 0); Note The class/parameter names in the prototype may not match the version in the header file. Some have been modified to improve readability.

Description
The member functions each find the first (lowest position) element of the controlled sequence at or after position iPos that matches any of the elements in the operand sequence specified by the remaining operands. If it succeeds, it returns the position. Otherwise, the function returns npos.

The position returned is 0 (zero) based. The npos return value is a special value indicating that none of the elements were found.

Sample code
////////////////////////////////////////////////////////////////////// // // Compile options needed: /GX // // main.cpp : Demonstrates the use of the basic_string::find_first_of. // // Functions: // //   basic_string::find_first_of - find the first instance in the //        controlled string of any of the elements specified by the //        parameters. The search begins at an optionally-supplied //        position in the controlled string. // // Written by Michael Reeves // of Microsoft Product Support Services, // Copyright (c) 1996 Microsoft Corporation. All rights reserved. //////////////////////////////////////////////////////////////////////


 * 1) include
 * 2) include

using namespace std; // std c++ libs implemented in std #endif
 * 1) if _MSC_VER > 1020  // if VC++ version is > 4.2

typedef basic_string<char, char_traits , allocator > test_string;

void main

{

test_string str1("Heartbeat"); test_string str2("abcde"); int iPos = 0;

cout << "The string to search is '" << str1.c_str << "'" << endl;

// find the first instance in str1 of any characters in str2 iPos = str1.find_first_of (str2, 0); // 0 is default position

cout << "Element in '" << str2.c_str << "' found at position " << iPos << endl;

// start looking in the third position... iPos = str1.find_first_of (str2, 2);

cout << "Element in '" << str2.c_str << "' found at position " << iPos << endl;

// use an array of the element type as the set of elements to   // search for; look for anything after the fourth position char achVowels[] = {'a', 'e', 'i', 'o', 'u'}; iPos = str1.find_first_of (achVowels, 4, sizeof(achVowels));

cout << "Element in '"; for (int i = 0; i < sizeof (achVowels); i++) cout << achVowels[i]; cout << "' found at position " << iPos << endl;

// use a string literal to specify the set of elements char szVowels[] = "aeiou"; iPos = str1.find_first_of (szVowels, 0); // 0 is default position

cout << "Element in '" << szVowels << "' found at position " << iPos << endl;

// look for a specific character beginning in the third position iPos = str1.find_first_of ('e', 2);

cout << "'e' found at position " << iPos << endl;

} Program Output is: The string to search is 'Heartbeat' Element in 'abcde' found at position 1 Element in 'abcde' found at position 2 Element in 'aeiou' found at position 6 Element in 'aeiou' found at position 1 'e' found at position 6

<div class="references_section">