Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.04.2012, 21:45   #1
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос Не правильно работает код

Программа должна заменить пробелы на символ / , а она почему то не заменяет
Код:
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main()
{
   string temp;
   vector <string> v;
   getline(cin, temp, '$');
   v.push_back(temp);
   for (int i=0; i<v.size(); i++)
   {
       if (v[i] == " ")
        v[i] = '/';
   } 
    for (int i=0; i<v.size(); i++)
    cout << v[i] << endl;
     

system("pause");
return 0;
}
Sylar9 вне форума Ответить с цитированием
Старый 04.04.2012, 21:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
vector <string> v;
Массив строк, а не символов.
Тебе ...
А собственно зачем тебе в данном случае vector?
просто опиши тип string - этого хватит для задачи.

P.S. И по-моему у этого типа есть метод replace, который заменой и занимается.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2012, 21:49   #3
Sylar9
Форумчанин
 
Регистрация: 22.10.2011
Сообщений: 252
Вопрос

Цитата:
Сообщение от Stilet Посмотреть сообщение
Массив строк, а не символов.
Тебе ...
А собственно зачем тебе в данном случае vector?
просто опиши тип string - этого хватит для задачи.

P.S. И по-моему у этого типа есть метод replace, который заменой и занимается.
это как ?
Sylar9 вне форума Ответить с цитированием
Старый 04.04.2012, 22:27   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Малость ошибся. Replace не для этого применяется
А сам код может выглядеть так:
Код:
	string s="hello world";
	for(int i=0;i<s.length();i++) if(s[i]==' ') s[i]='/';
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.04.2012, 22:37   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
std::string str = "Hello world";
std::replace(str.begin(), str.end(), ' ', '/');
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 04.04.2012, 23:48   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
pproger
У меня твой пример отчего-то заменяет все символы на /
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.04.2012, 00:10   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Stilet
покажи минимальный код с таким эффектом
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 05.04.2012, 08:23   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот смотри:
Код:
// v.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <string>
#include <iostream>


int _tmain(int argc, _TCHAR* argv[])
{

	std::string str = "Hello world";
    //std::replace(str.begin(), str.end(), ' ', '/');
	str.replace(str.begin(),str.end(), ' ', '/');
	std::cout<<str.c_str();
	std::cin.get();
	return 0;
}
вывод в скрине (VS2010)
Изображения
Тип файла: jpg Безымянный.JPG (12.7 Кб, 54 просмотров)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.04.2012, 12:11   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2Stilet
ну гдеж это мой код то? я вызываю функцию replace, а ты - функцию-член.
т.е ты вызываешь
Цитата:
string& replace ( iterator i1, iterator i2, size_t n2, char c );
The section is replaced by a repetition of character c, n2 times.
третий параметр у тебя неявно приводится к size_t.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи. как правильно вставить код в код? Кушманский Помощь студентам 13 18.03.2012 20:06
Не работает правильно!!! Vitalik1 Помощь студентам 2 01.11.2011 23:11
Стуктура работает не правильно RIO Общие вопросы C/C++ 4 20.12.2010 19:18
Не правильно (или правильно?) работает позиционирование в WebKit mutabor HTML и CSS 5 09.12.2010 09:54
Есть код но почему то не правильно работает -ushёl- Помощь студентам 1 10.05.2010 22:27