Как вы могли заметить, в C ++ эта информация недоступна. @ ΦXocę 웃 Пepeúpa ツ предоставляет хороший обходной путь.
Позвольте мне высказать другую точку зрения, как конечный пользователь вашей программы, меня не интересует строка кода, в которой программа не работает. Либо JSON, который я предоставляю, правильный или неверный. Во втором случае я хочу знать, что мне нужно сделать, чтобы исправить ошибку JSON. Глядя на код , определяющий исключения, он выглядит очень подробным.
В тот момент, когда он вас интересует, вы записываете ошибку в свою программу и получаете неожиданные ошибки. В этот момент вам лучше присоединить отладчик к своей программе и пройти через него, прерывая выброс любого исключения. Это даст вам не только номер строки, но и всю информацию, доступную в стеке ... Я могу порекомендовать писать модульные тесты для вашего кода, чтобы у вас были небольшие фрагменты кода, которые вам нужно отлаживать. В идеале вы можете даже сократить случай сбоя до нового модульного теста, если вы все еще сталкиваетесь с обнаруженной ошибкой в своей программе.
Наконец, аргумент производительности. Чтобы получить более подробную информацию, необходимо собрать более подробную информацию. За этот сбор приходится платить. В других языках программирования, таких как Java, вы можете запросить стек вызовов для своего исключения, в C ++ исключения минимальны. Хотя отслеживание номера строки может быть не так дорого, для этого требуются дополнительные инструкции по сборке, которые не нужны вашему конечному пользователю.
Короче говоря, язык не обеспечивает удобный способ получения номер строки. Это потому, что есть лучшие способы получить эту информацию и многое другое: ваш отладчик.