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

string И getline - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Запись информации в конец файла http://www.cyberforum.ru/cpp-beginners/thread115771.html
Доброго времени суток!Появилась небольшая проблема, помогите, пожалуйста.Необходимо записать информацию в конец файла, у меня получается так, что при повторной работе программы данные, записанные в файл затираются, а новые записываются.Язык С++.Заранее благодарна!
C++ Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент. 3. Вставить нулевую строку и нулевой столбец перед строкой и столбцом, где находится первый минимальный элемент. Люди,помогите написать прогу... http://www.cyberforum.ru/cpp-beginners/thread115769.html
C++ Подсчитать количество слов в строке
1.Дано строку слова в которой разделены пробелом (1 или несколькими). Подсчитать количество слов в даной строке. 2.Дано текст. Подсчитать количество строк.
Графический режим C++
Помогите пожалуйста с графикой! У меня изображение не отображается, выходит только черный экран. Если можно выложите пожалуйста пару примеров в графическом режиме если можно пожалуйста
C++ Описать структуру с именем AEROFLOT содержащей поля: название пункта назначения рейса, номер рейса, тип самолета, http://www.cyberforum.ru/cpp-beginners/thread115759.html
Описать структуру с именем AEROFLOT содержащей поля: название пункта назначения рейса, номер рейса, тип самолета, Написать прогу, выполняющую следующие действия: 1) Ввод с клавиатуры данных в массив состоящий из 7 элементов типа AEROFLOT; записи должны размещены в алфавитном порядке по названию пунктов назначения 2)Вывод на экран пунктов назначения и номеров рейсов обслуживаемых самолетов,...
C++ Файловая оболочка Уважаемые товарищи,прошу помочь мне реализовать такой проект на языке C: Файловая оболочка. * Навигация по дереву каталогов. * Создание новых каталогов. * Уничтожение каталогов. * Копирование файлов. * Перемещение файлов. подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
13.04.2010, 14:40     string И getline
Цитата Сообщение от Krist_ALL Посмотреть сообщение
что такое string::npos?
пробую вывести - выводиться длинное число.
Еще раз смотрим, что я написал выше:
Цитата Сообщение от Nameless One Посмотреть сообщение
беззнаковое целое, инициализированное -1, которое означает "не найдено" для результата функции find()
Так как npos - это константа, которая инициализируется отрицательным числом -1. Т.е npos - беззнаковое (неотрицательное) число, то вместо -1 в нем хранится максимальное число, которое может вместить тип size_t (4294967295). Это можно проверить, выполнив такую строчку, которая выведет true:

C++
1
std::cout << std::boolalpha << (std::string::npos == std::numeric_limits<size_t>::max()) << std::endl;
Теперь о том, как получилось такое число. Тип size_t на моей машине занимает 4 байта, т.е. 32 бит. В знаковых числах старший разряд (бит) - показатель знака. Отрицательные числа кодируются таким образом (пример для однобайтового типа, т.е. для 8 бит):
  1. Берется модуль отрицательного числа и расписывается его двоичное представление, с числом разрядов, равным числу бит типа, в котором хранится это число. Возьмем то же число -1. Его модуль для 8 разрядов в двоичной системе счисления равен 00000001
  2. Теперь инвертируем биты числа, т.е. в каждом разряде меняем 1 на 0 и наоборот: 11111110
  3. Прибавляем единицу: 11111111
  4. Получаем число, которое интерпретируется как -1, если рассматривать старший разряд (или бит) как знак числа, или 255, если рассматривать число как беззнаковое.
Для типа size_t (4 байта, 32 бит) двоичное представление числа -1 - это последовательность из 32 единиц. Если же рассматривать эту последовательность как беззнаковое число, то получаем 4294967295 - максимальное число, которое может хранится в типе size_t
Цитата Сообщение от Krist_ALL Посмотреть сообщение
и как по короче можно записать string::npos
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
 
#define NPOS std::string::npos
 
int main()
{
    setlocale(LC_ALL, "Russian");
    std::string text, word;
    size_t pos=0, i=0;
    std::cout << "Введите текст: ";
    std::getline(std::cin, text);
    std::cout << "Введите слово для поиска: ";
    std::getline(std::cin, word);
    while((pos=text.find(word, pos))!=NPOS)
    {
        ++i;
        pos+=word.size();
    }
    std::cout << "Слово встретилось " << i << " раз(а)" << std::endl;
    system("pause");
    return 0;
}
Фууух...
 
Текущее время: 23:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru