Замена пробелов в строке на% 20 в C ++ - PullRequest
2 голосов
/ 12 сентября 2011
#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;
}

Я не могу видеть вывод.Например

Enter Input String: a b c
Output = a

Что не так?

Ответы [ 3 ]

9 голосов
/ 12 сентября 2011
std::cin>>inputString;

останавливается на первом месте. Использование:

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

вместо.

5 голосов
/ 12 сентября 2011

cin по умолчанию останавливается на пробеле.

Измените ваш ввод на:

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

// will work now, will read until \n
std::getline(std::cin, inputString);
0 голосов
/ 13 июня 2012

другой лучший способ сделать это - сосчитать без пробелов, создать новую строку длины = старая длина + 2 * считать и начать перемещение символов из старой строки в новую строку, за исключением пробела, замените его на% 20 ....

Осуществление http://justprogrammng.blogspot.com/2012/06/replace-all-spaces-in-string-by-20.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...