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

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

Войти
Регистрация
Восстановить пароль
 
lomaxe
0 / 0 / 0
Регистрация: 23.01.2015
Сообщений: 8
#1

Смещение в тексте при использовании \n - C++

08.07.2015, 20:08. Просмотров 207. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Подскажите пожалуйста для начинающего.

При таком коде:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/ exercise 11
 
#include<iostream>
#include<clocale>
#include<iomanip>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Rus");
 
    cout << setiosflags(ios::left) << setw(10) << "Фамилия" << setw(10) << "Имя" << setw(16) << "Адрес"
    << setw(18) << "Город";
    cout << "\n------------------------------------------------------" << endl;
    cout << setiosflags(ios::left) << setw(10) << "Петров" << setw(10) << "Василий" << setw(16) << "Кленовая 16"
    << setw(18) << "Санкт-Петербург" << endl;
    cout << setiosflags(ios::left) << setw(10) << "Иванов" << setw(10) << "Сергей" << setw(16) << "Осиновая 3"
    << setw(18) << "Находка" << endl;
    cout << setiosflags(ios::left) << setw(10) << "Сидоров" << setw(10) << "Иван" << setw(16) << "Березовая 21"
    << setw(18) << "Калининград";
 
    return 0;
}
на экран выводится вот так (что в общем-то правильно, по идее):

Смещение в тексте при использовании \n


а при коде (в 16 строке перед "Петров" добавляем \n, вместо endl в 15 строке):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// exercise 11
 
#include<iostream>
#include<clocale>
#include<iomanip>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Rus");
 
    cout << setiosflags(ios::left) << setw(10) << "Фамилия" << setw(10) << "Имя" << setw(16) << "Адрес"
    << setw(18) << "Город";
    cout << "\n------------------------------------------------------" ;
    cout << setiosflags(ios::left) << setw(10) << "\nПетров" << setw(10) << "Василий" << setw(16) << "Кленовая 16"
    << setw(18) << "Санкт-Петербург" << endl;
    cout << setiosflags(ios::left) << setw(10) << "Иванов" << setw(10) << "Сергей" << setw(16) << "Осиновая 3"
    << setw(18) << "Находка" << endl;
    cout << setiosflags(ios::left) << setw(10) << "Сидоров" << setw(10) << "Иван" << setw(16) << "Березовая 21"
    << setw(18) << "Калининград";
 
    return 0;
}
выводится так:

Смещение в тексте при использовании \n

Объяните мне пожалуйста, почему, если я для перехода на новую строку использую не endl, а \n, происходит какое-то смещение в строке "Петров Василий...".
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2015, 20:08     Смещение в тексте при использовании \n
Посмотрите здесь:

Баг при использовании класса string при записи в бинарный файл - C++
При записи в бинарный файл пользовательского класса, всё отлично отрабатывает, но, если в классе использовался класс string, то в конце...

При использовании getline ввод при Enter заканчивается только после пробела - C++
int main() { string slovo; double n; while(slovo != &quot;пока&quot; ) { getline (cin,slovo,' '); if (slovo ==...

Ошибки при использовании stringstream - C++
Текст программы: #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; int main()...

Ошибка при использовании size_t - C++
Выдает много ошибок связанные с использованием typedef std::size_t size_type; #include &lt;iostream&gt; #include &lt;cstring&gt; #include...

Существует ли ограничение при использовании new? - C++
Здравствуйте. Ситуация: Я создала класс, описание которого ниже, и хочу выделить память под массив экземпляров этого класса размерностью...

Мини боевка при использовании do while - C++
Здравствуйте, делаю для себя текстовую рпг, вот возникла проблемка с боевой системой, не могу понять почему цикл не выполняется до конца,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
5273 / 4593 / 1538
Регистрация: 14.04.2014
Сообщений: 18,243
08.07.2015, 20:13     Смещение в тексте при использовании \n #2
Дело не в endl, а в том, что ты его после setw() ставишь, он одну позицию забирает.
lomaxe
0 / 0 / 0
Регистрация: 23.01.2015
Сообщений: 8
08.07.2015, 20:21  [ТС]     Смещение в тексте при использовании \n #3
Спасибо за ответ.
Но я то ставлю \n после setw(10), которое определяет поле в котором "Петров" пишется, а смещаются надписи во всех полях, которые определены оператором setw() для других надписей.
Не совсем могу понять логику.
nmcf
5273 / 4593 / 1538
Регистрация: 14.04.2014
Сообщений: 18,243
08.07.2015, 20:31     Смещение в тексте при использовании \n #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
У тебя для фамилии 10 позиций, из-за перестановки остаётся 9. Смещается именно строка с Петровым, она короче. Остальные нормальные, посчитай позиции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2015, 21:05     Смещение в тексте при использовании \n
Еще ссылки по теме:

Затруднение при использовании SYSTEMTIME - C++
Здравствуйте. У меня возникла проблема с данной простой программкой, ее суть - в изменении даты на некоторый срок и в последующем...

Ошибка при использовании STL - C++
Начал знакомиться с STL, и возникли проблемы. Вот суть: Имеется дочерний класс, одно поле которого является динамическим массивом. При...

Ошибка при использовании вектора - C++
Пытаюсь проанализировать текстовый файл и посчитать кол-во каждого символа. Текст на английском. Вот код: class Raspredelenie{ ...

Ошибка при использовании override - C++
Здравствуйте, форумчане, столкнулся с проблемой при использовании override: есть абстрактный класс с чистой виртуальной функцией move,...

Ошибка при использовании _findfirst() - C++
По условию нужно вывести все содержимое корневого каталога. Захожу в директорию, определяю наличие папок, затем (здесь ошибка) пробую...

Ошибка при использовании SendKeys - C++
При нажатии на button5 окно программы должно свернуться и в окне, которое было позади него (блокнот), написать &quot;Hello world&quot;: #pragma...


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

Или воспользуйтесь поиском по форуму:
lomaxe
0 / 0 / 0
Регистрация: 23.01.2015
Сообщений: 8
08.07.2015, 21:05  [ТС]     Смещение в тексте при использовании \n #5
Огромное спасибо за помощь в разъяснении. Да, действительно, крадёт одну позицию и смещает.
Yandex
Объявления
08.07.2015, 21:05     Смещение в тексте при использовании \n
Ответ Создать тему
Опции темы

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