# include <iostream>
# include <string>
using namespace std;
int main ()
{
	string s1,s2;
	getline(cin,s1);
	for (int i=0;i<s1.length();i++)
	{
		if (s1[i]!='.' && s1[i]!=' ')
		{
			s2[i]=s2[i]+s1[i];
		}
		s2=s2+' ';
	}
}

//string subscript out of range error why??

Edited 5 Years Ago by Ezzaral: Added code tags. Please use them to format any code that you post.

s2[i]=s2[i]+s1[i];

What makes you think s2 is large enough to be indexed with s2?

Edited 5 Years Ago by Narue: n/a

How can you convert string to an string array?? Use pointers and increment the pointer to concatenate ur strings

string *str1,*str2;
for(;; )
if(str1++!=".")
str2++=str2++ + str1++;

Hope this is works

Edited 5 Years Ago by manugm_1987: n/a

How can you convert string to an string array?? Use pointers and increment the pointer to concatenate ur strings

string *str1,*str2;
for(;; )
if(str1++!=".")
str2++=str2++ + str1++;

Hope this is works

There is WAAAY too much undefined behavior here. Not to mention you're de-referencing uninitialized pointers. Odds are, it won't work properly, if it even compiles.

>>How can you convert string to an string array??
Huh? What are you talking about? An std::string object has a built-in subscript operator, you don't have to convert anything. If you want to convert to a C-style string (a null-terminated array of char), you'll use the std::string::c_str() member function.

>>Use pointers and increment the pointer to concatenate ur strings
Possibly, but you're better off using either the class' built-in operator+= or append() function.

When you get right down to it, a std::string object is basically just a std::vector<char> with a few extra functions/operators. You can almost treat them the same. It is feasible (albeit, not really practical) to step through str1 char-by-char and perform a push_back() of each char in str1.

#include <iostream>
#include <string>

using std::cout;
using std::string;
using std::endl;

int main() {
  string str1("something"), str2("I'm gonna be ");

  for (unsigned i = 0; i < str1.length(); ++i) {
    str2.push_back(str1[i]);
  }
  std::cout << str2;

  return 0;
}

Edited 5 Years Ago by Fbody: n/a

This article has been dead for over six months. Start a new discussion instead.