Can i apply find_first_of ,substr,istringstream and make_pair to a char array?

Recommended Answers

All 4 Replies

You definitely can't use find_first_of and substr. They are members of the std::string class, and as such must be called using either the "dot" or "arrow" operator on a std::string object or pointer to std::string respectively. This means you won't even be able to get to them from a C-style string (char array).

The constructor for an istringstream has a reference to a std::string as an argument, so you may be able to create one from a char array because you can construct an std::string from a char array, but I have my doubts. Whatever you do to the stream probably won't be reflected in the array though.

The make_pair function is a templatized function, which means it can accept anything as an argument. You can use a char array as an argument.

But you want to know the best way to find out? Try it yourself. There's precious few better ways to learn than through experimentation.

Umm what exactly do you have in mind? Your questions isn't to clear for me.

Hey there,i have this code. It shows no error in the console but it shows a debug error,and in the output only the first "for"

#include <iostream>
	#include <string>
	
	using namespace std;
        int main ()
	{  const int polynomsize=5;
	   string sub[polynomsize];
	   string coefficient[polynomsize];
	  string str ="2.4x^4 - 1.2x^3 + 6x^2 + 4.1x + 9.2";
	  size_t found;
 
	  found=str.find_first_of("+-");
	   
	   sub[0]=str.substr(0,found);
	  cout<<"sub1"<<"  "<<sub[0]<<endl;
	  while (found!=string::npos)
	  { for (int i=1;i<=polynomsize;i++)
	 
	         { int a=found;
           found=str.find_first_of("+-",found+1);
	           sub[i]=str.substr(a,found-a);
	           cout<<"sub"<<i+1<<"  "<<sub[i]<<endl;
	     
	  }

	     
	  }
	 
	    for (int j=0;j<=polynomsize;j++)
		{ size_t foundx;
		foundx=sub[j].find_first_of("x");
		coefficient[j]=sub[j].substr(0,foundx);
		cout<<coefficient[j];
		}
	 
	  return 0;
	}

I haven't read your example code as I'm in a rush, but if you ever have a char array, and you want to carry out string operations on it, you can turn it into a string, carry out your operations, and then turn it back to a char array.

#include <string>
#include <cstring>
int main()
{

char aCharArray[] = "Hello World"; 
std::string aString(aCharArray);
// Carry out string operations....
aString.insert(4,"X");
char* cstr = new char [aString.size()+1];
strcpy (cstr, aString.c_str());
std::cout << cstr;

// Ignore memory leaks, I'm not being paid enough to worry about them :p

}

Output:

HellXo World

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.