C++ String Functions with Pointers

Click For Summary

Discussion Overview

The discussion revolves around using C++ string functions with pointers, specifically focusing on locating a substring within a C-style string. Participants explore how to assign the first instance of a substring ("The") in a given string (movieTitle) to a pointer (movieResult). The scope includes technical explanations and practical coding challenges.

Discussion Character

  • Technical explanation
  • Homework-related
  • Mathematical reasoning

Main Points Raised

  • One participant expresses confusion about how to find a substring in a C string and considers using strrchr or strchr functions.
  • Another participant clarifies that movieTitle is a pointer to char and suggests looking up the strstr function for the task.
  • A participant provides the definition of strstr, explaining its return value and expected parameters.
  • Further clarification is given regarding the function signature of strstr, emphasizing the need to understand function declarations to use them correctly.
  • Finally, a participant provides a direct assignment example using movieResult=strstr(movieTitle, "The").

Areas of Agreement / Disagreement

Participants generally agree on the use of the strstr function to find the substring, but there is no consensus on the initial approach to take, as some participants suggest different functions (strrchr, strchr) before arriving at strstr.

Contextual Notes

There is an emphasis on understanding C strings versus C++ string objects, and the discussion highlights the importance of knowing function signatures and return types when working with pointers.

Who May Find This Useful

This discussion may be useful for students learning about C-style strings, pointers, and string manipulation functions in C++. It may also benefit those seeking clarification on using specific string functions in programming assignments.

ineedhelpnow
Messages
649
Reaction score
0
Assign the first instance of The in movieTitle to movieResult.

Sample program:
Code:
#include <iostream>
#include <cstring>
using namespace std;

int main() {
   char movieTitle[100] = "The Lion King";
   char* movieResult = 0;

   <STUDENT CODE>

   cout << "Movie title contains The? ";
   if (movieResult != 0) {
      cout << "Yes." << endl;
   }
   else {
      cout << "No." << endl;
   }

   return 0;
}

I have no idea how to do this. I was thinking to use either the strrchr function or strchr but I'm not sure which one. Something like movieResult=strrchr(movieTitle, ?) but I'm really confused.
 
Technology news on Phys.org
Here you are working with C strings, not C++ string objects.
As in one of your previous questions, movieTitle (an array) is a pointer to char.
For example, *movieTitle=='T' and *(movieTitle+2)=='e'.
Since movieResult is a pointer to char, the only possible value of movieResult is a pointer.
So look up the function strstr. You'll find the types of the expected parameters and the return value type.
BTW, even with pointer to char, I think it is better to use NULL instead of 0; this reinforces the idea that you're dealing with pointers.
 
This is the definition I have of strstr "strstr(str1, str2) Returns char* pointing to first occurrence of string str2 within string str1. Returns 0 if not found. "

How do I use it though?
 
If you want to call (use) a function, you must know exactly the function declaration so you can supply correct arguments. The prototype for strstr (actually there are 2 strstr's in C++; they differ only in const modifiers) is:

const strstr(char* str1,const char* str2);

For a parameter, the modifier const merely is a promise to the compiler that the parameter will not be changed by the function. For example, the compiler will disallow a statement like *str2='a' within the function body of strstr. So now to use strstr, you must supply 2 pointers to char as the arguments. For example strstr(movieResult,NULL) is a valid function call; it's not what you want, though. The return value of strstr is a pointer (non NULL) to the first occurrence of str2 in str1 or NULL if str2 is not a substring of str1. Now I leave to you the proper function call and what you should do with the return value.
Moral of the story: you must know exactly the function's signature (parameters and types) and return value to use it.
 
Last edited:
Code:
movieResult=strstr(movieTitle, "The");
 

Similar threads

Replies
12
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 22 ·
Replies
22
Views
4K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 4 ·
Replies
4
Views
6K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 23 ·
Replies
23
Views
3K
  • · Replies 4 ·
Replies
4
Views
6K