Форум программистов, компьютерный форум CyberForum.ru

Класс string - C++

Восстановить пароль Регистрация
 
OdessaNA
 Аватар для OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 240
02.03.2013, 13:30     Класс string #1
Добрый день, друзья.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
using namespace std;
 
int main (void)
{
    string obj = "one two three.";
 
    int x = obj.find(' ');  
    
    while( x < obj.size() )
    {
        obj.replace(x, 1, "/");
        x = obj.find( ' ' );
    }
 
    cout << obj << endl;    
 
    return 0;
}
Почему она работает? Как x "становиться" >= obj.size() ? Как я понимаю - если знак не найден - функция obj.find() возвращает -1 ...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2013, 13:30     Класс string
Посмотрите здесь:

Класс Person. Класс String C++
Свой класс String C++
C++ класс string
Класс String C++
Класс <string> C++
C++ Класс String
C++ Класс String
C++ класс String

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Venzo
 Аватар для Venzo
125 / 123 / 4
Регистрация: 03.07.2011
Сообщений: 354
02.03.2013, 13:36     Класс string #2
string::find(...) возвращает string::npos, если подстрока не найдена. выведите string::npos и поймете почему)
OdessaNA
 Аватар для OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 240
02.03.2013, 14:07  [ТС]     Класс string #3
прикольная штуковина!

Добавлено через 11 минут
Расширив диапазон х - мы увидим, что возвращает find() при отсутствии искомого знака:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
 
using namespace std;
 
int main (void)
{
    string obj = "one two three.";
 
   unsigned int x = obj.find(' ');   //вот и unsigned пригодился
    
    while( x < obj.size() )
    {
        obj.replace(x, 1, "/");
        x = obj.find( ' ' );
    }
 
    cout << "x = " << x << '\n' << obj << endl;    //теперь на экране x равен не -1, а 4294967295
 
    return 0;
}
Yandex
Объявления
02.03.2013, 14:07     Класс string
Ответ Создать тему
Опции темы

Текущее время: 20:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru