Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
-
Economics & Finance
C++ program to remove spaces from a string using String stream
As the given problem says, we need to remove spaces from the string using a string stream. As the name suggests, a string stream converts a string into a stream. It works similar to cin in C++. It associates a string object that can access the string buffer in which it is stored.
string s =" a for apple, b for ball"; res = solve(s);
With a string buffer, we will read each word one by one and then concatenate it into a new string which will be our answer.
Note ? The class string stream is available in the sstream header file in c++, so we need to include it.
Let us look at some input/output scenarios
Assume the input taken by the function has no spaces in it, the output result achieved would be the same as the input ?
Input: "Tutorialspoint" Result: "Tutorialspoint"
Assume the input taken by the function has no spaces in it, the output result achieved would be the string void of all the spaces in it ?
Input: "Tutorials Point" Result: "TutorialsPoint"
Assume the input taken by the function has only spaces in it, the method fails to provide an output result ?
Input: " " Result:
Algorithm
Consider an input string with characters.
The string is checked to not be empty and using stringstream keyword all the spaces present in the input are removed.
This process is done until the stringstream pointer reaches the end of line.
If it reaches end of line in the string, the program terminates.
The updated string is returned to the output result.
Example
For example, we have a string such as "a for apple, b for a ball," we need to convert that to "aforapple,bforball."
Following a detailed code of removing the spaces from string inputs to make it a stream of characters ?
<div class="execute"></div><div class="code-mirror language-cpp" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string"><iostream></span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string"><sstream></span></span>
<span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span>
string <span class="token function">solve</span><span class="token punctuation">(</span>string s<span class="token punctuation">)</span> <span class="token punctuation">{</span>
string answer <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">,</span> temp<span class="token punctuation">;</span>
stringstream ss<span class="token punctuation">;</span>
ss <span class="token operator"><<</span> s<span class="token punctuation">;</span>
<span class="token keyword">while</span><span class="token punctuation">(</span><span class="token operator">!</span>ss<span class="token punctuation">.</span><span class="token function">eof</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
ss <span class="token operator">>></span> temp<span class="token punctuation">;</span>
answer<span class="token operator">+=</span>temp<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> answer<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
string s <span class="token operator">=</span><span class="token string">"a for apple, b for ball"</span><span class="token punctuation">;</span>
cout <span class="token operator"><<</span> <span class="token function">solve</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>
Output
Aforapple,bforball
Example (Using getline)
We also have another approach using getline to solve the same query in C++.
<div class="execute"></div><div class="code-mirror language-cpp" contenteditable="plaintext-only" spellcheck="false" style="outline: none; overflow-wrap: break-word; overflow-y: auto; white-space: pre-wrap;"><span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string"><iostream></span></span>
<span class="token macro property"><span class="token directive-hash">#</span><span class="token directive keyword">include</span> <span class="token string"><sstream></span></span>
<span class="token keyword">using</span> <span class="token keyword">namespace</span> std<span class="token punctuation">;</span>
string <span class="token function">solve</span><span class="token punctuation">(</span>string s<span class="token punctuation">)</span> <span class="token punctuation">{</span>
stringstream <span class="token function">ss</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">;</span>
string temp<span class="token punctuation">;</span>
s <span class="token operator">=</span> <span class="token string">""</span><span class="token punctuation">;</span>
<span class="token keyword">while</span> <span class="token punctuation">(</span><span class="token function">getline</span><span class="token punctuation">(</span>ss<span class="token punctuation">,</span> temp<span class="token punctuation">,</span> <span class="token string">' '</span><span class="token punctuation">)</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
s <span class="token operator">=</span> s <span class="token operator">+</span> temp<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">return</span> s<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<span class="token keyword">int</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
string s <span class="token operator">=</span><span class="token string">"a for apple, b for ball"</span><span class="token punctuation">;</span>
cout <span class="token operator"><<</span> <span class="token function">solve</span><span class="token punctuation">(</span>s<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
</div><div class="output-wrapper"><div class="console-close"></div><div class="code-output"></div></div>
Output
Aforapple,bforball
Conclusion
We see that using string stream, the string is stored in the buffer, and we can get the string word by word and concatenate it, removing spaces.
