Вы, вероятно, хотите использовать драгоценный камень https://github.com/sparklemotion/nokogiri .
Nokogiri (鋸) - это Rubygem, предоставляющий парсеры HTML, XML, SAX и Reader с поддержкой XPath и CSS-селекторов.
blockquote>require 'nokogiri' html = < link1
Чтобы изменить ваш пример:
require 'net/http'
require 'uri'
require 'nokogiri'
uri = URI.parse("https://www.example.com")
request = Net::HTTP::Get.new(uri)
request.content_type = "application/json"
request["Accept"] = "application/json"
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
response.body
doc = Nokogiri::HTML.parse(response.body)
doc.css('p').text;
#=> "This domain is established to be used for illustrative examples in documents. You may use this\n domain in examples without prior coordination or asking for permission.More information..."
Второе является неправильным!
Можно использовать
MyClass object;
Это будет работать.
Теперь, касающееся, как выбрать между этими двумя возможностями, это главным образом, зависит от того, сколько времени Ваш объект должен жить. Посмотрите там для полного ответа.
Myclass *object = new Myclass(); //object has dynamic storage duration (usually is on the heap)
Myclass object; //object has automatic storage duration (usually is on the stack)
Вы создаете объекты с продолжительностью динамической памяти (обычно на "куче"), если Вы планируете использование их в течение длительного промежутка времени, и Вы создаете объекты с продолжительностью автоматического хранения (обычно на стеке) в течение короткого времени жизни (или объем).
new
оператор возвращает указатель на объект, который он создает, таким образом, выражение Myclass object = new Myclass();
недопустимо.
Другие языки не имеют явных указателей как C++, таким образом, можно записать операторы как Myclass object = new Myclass();
, но в C++ это просто не возможно. Тип возврата new Myclass();
указатель на a Myclass
объект, т.е. Myclass *
.
Первый пример создает указатель на MyClass и инициализирует его для указания на результат нового оператора.
Второе, вероятно, не скомпилирует, поскольку это пытается создать MyClass, возражают и присваивают его указателю MyClass. Это могло работать в маловероятном случае, что у Вас есть конструктор MyClass, который принимает указатель MyClass.
Первое корректно.
Второе не будет обычно компилировать. И если это действительно компилирует затем класс, делает некоторые сложные вещи в конструкторе/операторе присваивания. И это, вероятно, пропускает память.