Russian Qt Forum
Октябрь 02, 2024, 01:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Перенос строк кода, как???  (Прочитано 34877 раз)
PavelVX
Гость
« : Июль 04, 2011, 11:59 »

Заранее извиняюсь за ламерский вопрос, но: как переносить строки в Qt(С++)?
Поясняю:
QString strSQL;
strSQL = "select f1, f2, f3 " <------ как тут перенести код, что бы все осталось читабельным?
"from t1"                          <------
"inner join t2 on t1.f1 = t2.f1";
В обычных случаях просто делаем перенос после зяпятой, но тут идет QString, который прерывать нельзя.
Как в данном случае переносить?
Записан
Denjs
Гость
« Ответ #1 : Июль 04, 2011, 12:07 »

гм... не знаю где в каком С++ вы можете делать перенос строк после запятой...
а в С++/Qt символ переноса строки экранируется обратным слэшом ( \ ). По моему так)  Смеющийся
Код:
QString strSQL;
strSQL = "select f1, f2, f3 \
from t1 \
inner join t2 on t1.f1 = t2.f1";
Естественно - за слешом строка должна кончаться. сразу, без пробелом и прочего.

удачи.
« Последнее редактирование: Июль 04, 2011, 12:09 от Denjs » Записан
iks
Гость
« Ответ #2 : Июль 04, 2011, 12:40 »

рабочий вариант через \ или можно
Код
C++ (Qt)
QString strSQL = "select f1, f2, f3 "
               "from t1 "
               "inner join t2 on t1.f1 = t2.f1";
« Последнее редактирование: Июль 04, 2011, 22:35 от iks » Записан
PavelVX
Гость
« Ответ #3 : Июль 04, 2011, 12:41 »

Про зяпятую имелось ввиду ситуация типа:
void f1(arg1, arg2, <--- тут так можно переносить
arg3);
За вариант со слешем спасибо, только синтаксис чуть чуть не такой(закрывающих и открывающих кавычек не хватает):
QString strSQL;
strSQL = "select f1, f2, f3 "\
"from t1 "\
"inner join t2 on t1.f1 = t2.f1";
Хех, уже опередили с кавычками!
Но все равно спасибо!
Записан
PavelVX
Гость
« Ответ #4 : Июль 04, 2011, 12:50 »

с плюсами в начале не хочет Грустный
 error: invalid operands of types 'const char [66]' and 'const char [41]' to binary 'operator+'
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #5 : Июль 04, 2011, 12:52 »

а с каких пор тут вообще слэш нужен (это ж не макрос)? всю жизнь работало без него
Код
C++ (Qt)
QString strSQL;
strSQL = "select f1, f2, f3 "
"from t1 "
"inner join t2 on t1.f1 = t2.f1";
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Denjs
Гость
« Ответ #6 : Июль 04, 2011, 13:15 »

а с каких пор тут вообще слэш нужен (это ж не макрос)? всю жизнь работало без него
Код
C++ (Qt)
QString strSQL;
strSQL = "select f1, f2, f3 "
"from t1 "
"inner join t2 on t1.f1 = t2.f1";
слеш нужен если мы хотим сделать многострочную строку))) т.е. что бы в строке были символы перевода строк.
Код
C++ (Qt)
QString strSQL;
strSQL = "select f1, f2, f3 "
"from t1 "
"inner join t2 on t1.f1 = t2.f1";
создает в переменной значение
Цитировать
select f1, f2, f3 from t1 inner join t2 on t1.f1 = t2.f1
, (которое будет так одной строкой и выводиться (через qDebug() например) )
Сравните это с
Код
C++ (Qt)
QString strSQL;
strSQL = "select f1, f2, f3 \
from t1 \
inner join t2 on t1.f1 = t2.f1"
;
Цитировать
select f1, f2, f3 \n from t1 \n inner join t2 on t1.f1 = t2.f1
что при выводе (через тот-же qDebug() - скорее всего переродится в
Цитировать
select f1, f2, f3
from t1
inner join t2 on t1.f1 = t2.f1


вот и вся разница.
Хотя ваш синтаксис я практически никогда не видел... он работает?  Смеющийся

А если же автор имел в виду про перенос аргументов в сигнатуре функции при вызове - то как угодно ничего не надо.
Код:
rez=myFunction (
            argument1,
            argument2,
            argument3,
            argument4
           );
« Последнее редактирование: Июль 04, 2011, 13:21 от Denjs » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4744



Просмотр профиля WWW
« Ответ #7 : Июль 04, 2011, 13:25 »

а я этот синтаксис со слешами впервые вижу Улыбающийся

но креатор выдаёт какие-то интересные вещи (и он кстати не подсвечивает все остальные части строки при переносе слешем):
Код
C++ (Qt)
QString s = "qwe\n"
"asd\n"
"zxc";
qDebug("%s", qPrintable(s));
Цитировать
qwe
asd
zxc
Код
C++ (Qt)
QString s = "qwe\
asd\
zxc"
;
qDebug("%s", qPrintable(s));
Цитировать
qwe          asd          zxc

добавлено: а, понял. всё, что после слешей, он интерпретирует как часть строки (это табуляции), но перенос строки не вставляет.
« Последнее редактирование: Июль 04, 2011, 13:30 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
iks
Гость
« Ответ #8 : Июль 04, 2011, 22:26 »

Проще говоря если используете
Код
C++ (Qt)
QString str = "abc \
def \
hty..."
;
учитываются все пробелы, если
Код
C++ (Qt)
QString str = "abc "
             "def "
             "hty...";
то тут можно код более приемлимый писать зрительно, хотя разницы по работе ни какой
« Последнее редактирование: Июль 04, 2011, 22:28 от iks » Записан
PavelVX
Гость
« Ответ #9 : Июль 05, 2011, 05:21 »

всем большое спасибо!
Конечно интересовал более наглядный способ для больших запросов.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.349 секунд. Запросов: 23.