2011-09-12 53 views
2
#include <iostream> 
#include <string> 

void removeSpaces(std::string); 

int main() 
{ 
     std::string inputString; 
     std::cout<<"Enter the string:"<<std::endl; 
     std::cin>>inputString; 

     removeSpaces(inputString); 

     return 0; 
} 



void removeSpaces(std::string str) 
{ 
     size_t position = 0; 
     for (position = str.find(" "); position != std::string::npos; position = str.find(" ",position)) 
     { 
       str.replace(position ,1, "%20"); 
     } 

     std::cout<<str<<std::endl; 
} 

我無法看到任何輸出。例如在C++中用%20替換字符串中的空格

Enter Input String: a b c 
Output = a 

怎麼了?

+0

可能重複不能在字符串中使用? C++](http://stackoverflow.com/questions/4992229/spaces-cant-be-used-in-string-c) –

回答

9
std::cin>>inputString; 

停在第一個空格處。使用:

std::getline(std::cin, inputString); 

改爲。

+0

在調用'removeSpaces()'之前調用一個小診斷輸出將在問題出現之前解決這個問題甚至有必要... –

+0

工作:)。謝謝 – Kelly

5

cin默認停在空白處。

更改您的輸入:

// will not work, stops on whitespace 
//std::cin>>inputString; 

// will work now, will read until \n 
std::getline(std::cin, inputString);