Вопросы с тегом «c++»

C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который будет скомпилирован с помощью компилятора C ++). Используйте тег, зависящий от версии, для вопросов, связанных с конкретной редакцией стандарта [C ++ 11], [C ++ 14], [C ++ 17] или [C ++ 20] и т. Д.

10
Преобразование QString в char *
Я пытался преобразовать QString в тип char * следующими методами, но они, похоже, не работают. //QLineEdit *line=new QLineEdit();{just to describe what is line here} QString temp=line->text(); char *str=(char *)malloc(10); QByteArray ba=temp.toLatin1(); strcpy(str,ba.data()); Можете ли вы уточнить возможные недостатки этого метода или предложить альтернативный метод?
99 c++  qt  qstring  qtcore 

2
Как определить несколько включаемых путей в Makefile
Новое в C ++; Базовое понимание включает, библиотеки и процесс компиляции. Сделал еще несколько простых make-файлов. В моем текущем проекте используется api informix DB, и мне нужно включить файлы заголовков в более чем один нестандартный каталог. Как это написать? Ничего не нашел в сети, вероятно, потому что я не использовал …
99 c++  include  makefile 

9
Ошибка компиляции: «g ++: ошибка при попытке выполнить exec 'cc1plus': execvp: нет такого файла или каталога»
Когда я компилирую программу C / C ++ с помощью popenin php... я получил эту ошибку: g++: error trying to exec 'cc1plus': execvp: No such file or directory но если я запустил php-код в оболочке .. он отлично работает .. в Arch Linux .. Код PHP: <?php function rfile($fp) { …
99 php  c++  c  linux  gcc 


16
Чистые способы написания нескольких циклов for
Для массива с несколькими измерениями нам обычно нужно написать forцикл для каждого из его измерений. Например: vector< vector< vector<int> > > A; for (int k=0; k<A.size(); k++) { for (int i=0; i<A[k].size(); i++) { for (int j=0; j<A[k][i].size(); j++) { do_something_on_A(A[k][i][j]); } } } double B[10][8][5]; for (int k=0; k<10; …
98 c++  for-loop 

4
Каков правильный ответ для cout << a ++ << a ;?
Недавно в интервью был задан следующий вопрос объективного типа. int a = 0; cout &lt;&lt; a++ &lt;&lt; a; Ответы: а. 10 б. 01 с. неопределенное поведение Я ответил на вариант b, т.е. вывод будет «01». Но, к моему удивлению, позже интервьюер сказал мне, что правильный ответ - вариант c: undefined. …
98 c++  c++-faq 

14
Должен ли я унаследовать от std :: exception?
Я видел по крайней мере один надежный источник (класс C ++, который я взял) рекомендовал, чтобы классы исключений для конкретного приложения в C ++ наследовали от std::exception . Я не совсем понимаю преимущества этого подхода. В C # причины наследования от ApplicationExceptionочевидны: вы получаете несколько полезных методов, свойств и конструкторов, …

4
Почему мы копируем, а затем перемещаем?
Я где-то видел код, в котором кто-то решил скопировать объект и впоследствии переместить его в член данных класса. Это привело меня в замешательство, поскольку я думал, что весь смысл перемещения заключается в том, чтобы избежать копирования. Вот пример: struct S { S(std::string str) : data(std::move(str)) {} }; Вот мои вопросы: …

6
(Как) я могу подсчитать элементы в перечислении?
Этот вопрос пришел мне в голову, когда у меня было что-то вроде enum Folders {FA, FB, FC}; и хотел создать массив контейнеров для каждой папки: ContainerClass*m_containers[3]; .... m_containers[FA] = ...; // etc. (Использование карты это гораздо элегантнее использования: std::map&lt;Folders, ContainerClass*&gt; m_containers;) Но вернемся к моему первоначальному вопросу: что, если я …
98 c++  count  enumeration 

7
Предупреждение C ++: деление двойного на ноль
Случай 1: #include &lt;iostream&gt; int main() { double d = 15.50; std::cout&lt;&lt;(d/0.0)&lt;&lt;std::endl; } Компилируется без предупреждений и выводов inf. Хорошо, C ++ может обрабатывать деление на ноль ( посмотреть вживую ). Но, Случай 2: #include &lt;iostream&gt; int main() { double d = 15.50; std::cout&lt;&lt;(d/0)&lt;&lt;std::endl; } Компилятор выдает следующее предупреждение ( …

9
как преобразовать из int в char *?
Я знаю только один способ: #include &lt;sstream&gt; #include &lt;string.h&gt; using namespace std; int main() { int number=33; stringstream strs; strs &lt;&lt; number; string temp_str = strs.str(); char* char_type = (char*) temp_str.c_str(); } Но есть ли способ с меньшим набором текста?

2
Каковы правила для токена «…» в контексте вариативных шаблонов?
В C ++ 11 есть вариативные шаблоны, подобные этому: template&lt; class T, class... Args &gt; unique_ptr&lt;T&gt; make_unique( Args&amp;&amp;... args ) { return unique_ptr&lt;T&gt;(new T(std::forward&lt;Args&gt;(args)...)); } В этом есть некоторые любопытства: выражение std::forward&lt;Args&gt;(args)...использует оба Argsи, argsно только один ...токен. Кроме того std::forward, это невариная шаблонная функция, принимающая только один параметр шаблона …

7
Что такое дескриптор в C ++?
Мне сказали, что дескриптор является своего рода указателем, но не указателем, и что он позволяет вам сохранять ссылку на объект, а не на сам объект. Какое более подробное объяснение?
98 c++  handle 

12
Удаление элемента из вектора, находясь в диапазоне С ++ 11 для цикла?
У меня есть вектор IInventory *, и я просматриваю список, используя диапазон C ++ 11 для работы с каждым из них. Проделав кое-что с одним, я могу удалить его из списка и удалить объект. Я знаю, что могу вызвать deleteуказатель в любое время, чтобы очистить его, но как правильно удалить …
98 c++  vector  for-loop  c++11 

4
Реализация операторов сравнения через «кортеж» и «галстук» - хорошая идея?
(Примечание: tupleи tieможет быть взято из Boost или C ++ 11.) При написании небольших структур только с двумя элементами я иногда склоняюсь к выбору a std::pair, поскольку все важные вещи уже сделаны для этого типа данных, например, operator&lt;для строгого-слабого упорядочения . Минусами являются бесполезные имена переменных. Даже если бы я …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.