C ++ const casting - PullRequest
       37

C ++ const casting

1 голос
/ 06 июня 2011

Я пытаюсь напечатать значение const, но оно не работает.Я возвращаюсь в C ++ спустя годы, так что я знаю, что приведение является возможным решением, но я тоже не могу заставить его работать.

Код выглядит следующим образом:пытаясь напечатать значение «строк» ​​без успеха.

Ответы [ 4 ]

6 голосов
/ 06 июня 2011

Вы хотите:

cout << endl << "Rows : " << rows;

Обратите внимание, что это не имеет ничего общего с const - C ++ не позволяет объединять строки и числа с помощью оператора +.Что вы на самом деле делали, так это таинственная вещь, называемая арифметикой указателей.

4 голосов
/ 06 июня 2011

Вы почти там:

cout << endl << "Rows : " << rows;

Ошибка в том, что "Rows : " является строковым литералом, следовательно, является константой и, вообще говоря, не изменяется, как вы думаете.

Пойдя немного дальше, вы, вероятно, использовали + (в разговорной речи используется как операция конкатенации), предполагая, что вам нужно построить строку для выдачи выходному потоку.Вместо этого operator << возвращает выходной поток, когда это сделано, что позволяет создавать цепочки.

// It is almost as if you did:
(((cout << endl) << "Rows : ") << rows)
1 голос
/ 06 июня 2011

Я думаю, вы хотите:

std::cout << std::endl << "Rows : " << rows << std::endl;

Я делаю эту ошибку все время, так как я также много работаю с Java.

0 голосов
/ 06 июня 2011

Как уже отмечали другие, вам нужно

std::cout << std::endl << "Rows : " << rows << std::endl;

Причина (или одна из причин) заключается в том, что "Rows : " является char*, а оператор + для char* s не объединяет строки, как оператор для std::string и строки в языках. как Java и Python.

...