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

Правила описания спецсимволов в строке - C++

Восстановить пароль Регистрация
 
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
27.09.2013, 13:08     Правила описания спецсимволов в строке #1
Здравствуйте! У меня такая проблема: есть код, работу которого нужно пояснить преподавателю

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 <stdio.h>
char input[] = "sstealch1\1\11s\1wllliw1";
 
int main()
{ 
int i,c;
for ( i=2; (c=input[i]) !='\0'; i++) 
{
    switch(c)
    {
        case 'a': putchar(c); continue;
        case '1': break;
        case 1 : while( (c=input[++i]) != '\1' && c != '\0');
        case 9 : putchar('s');
        case 'w':
        case 'l': continue;
        default : putchar(c); continue;
    }
    putchar(' ');
}  
putchar('\n'); 
return 0;
}
Не могу пояснить лишь ПОЧЕМУ "\11" обрабатывается как \011 (в восьмеричной системе). Проверка показала, что \(число) обрабатывается в 8х системе, \x(число) в 16х , хотя по идее должно быть \0(число), \0х(число). Кто может пояснить, ПОЧЕМУ, подскажите пожалуйста.
P.S. Если имеет значение, среда Visual Studio 2010 Ultimate лицензия DreamsSpark'a.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
27.09.2013, 13:22     Правила описания спецсимволов в строке #2
Цитата Сообщение от astatium135 Посмотреть сообщение
хотя по идее должно быть \0(число)
\0 - это вообще символ конца строки

Добавлено через 1 минуту
\(число) - такого литерала вообще не существует в природе (по моему)
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
27.09.2013, 13:22  [ТС]     Правила описания спецсимволов в строке #3
Цитата Сообщение от Raali Посмотреть сообщение
\0 - это вообще символ конца строки
C++
1
2
3
4
5
6
int main()
{   
    cout<<"\x09";
    system("pause");
    return 0;
}
табуляцию выводит

\(число) - в смысле \5, \13 и т.д
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
27.09.2013, 13:23     Правила описания спецсимволов в строке #4
Цитата Сообщение от astatium135 Посмотреть сообщение
cout<<"\x09";
дак здесь нету \0
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
27.09.2013, 13:30  [ТС]     Правила описания спецсимволов в строке #5
C++
1
2
3
4
5
6
int main()
{   
    cout<<"\011";
    system("pause");
    return 0;
}
эквивалентен

C++
1
2
3
4
5
6
int main()
{   
    cout<<"\11";
    system("pause");
    return 0;
}
Можешь пояснить, почему
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
27.09.2013, 13:31     Правила описания спецсимволов в строке #6
Цитата Сообщение от astatium135 Посмотреть сообщение
ПОЧЕМУ "\11" обрабатывается как \011 (в восьмеричной системе).
ну вообще 11 и 011 это одни и те же числа - по этому так же и обрабатывается
формат 8-ричного литерала может быть такой
\ number
\ number number (\11)
\ number number number (\011)
astatium135
0 / 0 / 0
Регистрация: 02.02.2013
Сообщений: 7
27.09.2013, 13:34  [ТС]     Правила описания спецсимволов в строке #7
Цитата Сообщение от ForeverSucks Посмотреть сообщение
могу там где слэш существует эквивалентность по отношению к систем
А по понятней?

Добавлено через 2 минуты
Цитата Сообщение от Raali Посмотреть сообщение
ну вообще 11 и 011 это одни и те же числа - по этому так же и обрабатывается
формат 8-ричного литерала может быть такой
\ number
\ number number
\ number number number
12345 - десятеричное
012345 - восьмеричное
0x12345 - шестнадцатеричное

Вопрос: Почему в строке по-другому?
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,334
Завершенные тесты: 1
27.09.2013, 13:34     Правила описания спецсимволов в строке #8
Цитата Сообщение от astatium135 Посмотреть сообщение
sstealch1\1\11s\1wllliw1
прочтется как
Код
's' 's' 't' 'e' 'a' 'l' 'c' 'h' '1' 'SOH' 'SOH' '1' 's' 'SOH' 'w' 'l' 'l' 'l' 'i' 'w' '1'
http://www.island-formoza.ru/arhitek...-simvolov.html
И подумайте зачем вам это надо?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2013, 13:37     Правила описания спецсимволов в строке
Еще ссылки по теме:

Ошибка описания динамического двумерного массива C++
C++ Регулярные выражения с игнорированием спецсимволов
Классы для описания больницы (обсуждение) C++

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

Или воспользуйтесь поиском по форуму:
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
27.09.2013, 13:37     Правила описания спецсимволов в строке #9
Цитата Сообщение от astatium135 Посмотреть сообщение
0x12345 - шестнадцатеричное
Вопрос: Почему в строке по-другому?
в случае с последним в строку придется пихать 0 и x - зачем лишние символы ("\xFF"(4 байта) или "\x0xFF" (5 байт))
Yandex
Объявления
27.09.2013, 13:37     Правила описания спецсимволов в строке
Ответ Создать тему
Опции темы

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