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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
dima55501
 Аватар для dima55501
29 / 33 / 6
Регистрация: 14.07.2013
Сообщений: 146
#1

Изменяется значение при использовании манипуляторов - C++

04.12.2013, 18:56. Просмотров 176. Ответов 0
Метки нет (Все метки)

Добрый день. Написал перегруженный оператор вывода в поток. Проблема в том, что если num будет начинаться с нулей, то они просто не появятся на экране. Для решения этой проблемы изменил ширину поля и использовал 0 как заполнитель. Проблема в том, что на выходе получаю не 0013, а 0011. Причем если первые нули заменить например на единицы, то на выходе получаю правильное число. В чем может быть проблема?

Код
#pragma warning(disable:4996)
#include <iostream>
#include <iomanip>

using namespace std;

class Phonebook
{
private:
	char name[64];
	int areacode;
	int prefix;
	int num;
public:
	Phonebook(char *n, int a, int p, int nm) { 
		strcpy(name, n); 
		areacode = a; 
		prefix = p; 
		num = nm; 
	}
	friend ostream &operator<<(ostream &, Phonebook &); 
};

ostream &operator<<(ostream &stream, Phonebook &obj)
{
	stream << obj.name << " ";
	stream << "(" << obj.areacode << ") ";
	stream << obj.prefix << "-";
	stream.width(4); //ширина поля = 4
	stream.fill('0'); // для вывода незначащих нулей
	stream << obj.num;
	return stream;
}

int main()
{
	Phonebook a("Taddy", 111, 555, 1113);
	cout << a << endl;
	system("pause");
	return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 18:56     Изменяется значение при использовании манипуляторов
Посмотрите здесь:

Почему значение tellg() не изменяется? C++
Создание манипуляторов C++
C++ Изменяется значение щетчика
Значение аргумента х изменяется от а до b с шагом h C++
Вычислить значение для float при использовании pow C++
C++ Не изменяется значение элемента класса
Почему изменяется значение переменной между функциями класса? C++
C++ Отличие форматирующих функций, флагов, манипуляторов
C++ Не правильное значение при использовании {setlocale (LC_ALL, "Russian");
C++ Изменяется ли адрес или значение переменной при объявлении ее как const?
Не изменяется значение переменной в объекте C++
C++ Функция суммы, не изменяется значение

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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