<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>stdioh &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/stdioh/</link>
	<description>Feed of posts on WordPress.com tagged "stdioh"</description>
	<pubDate>Sat, 02 Jan 2010 21:17:23 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Парсим страницы, тащим e-mail]]></title>
<link>http://bitonic.wordpress.com/2008/11/24/%d0%bf%d0%b0%d1%80%d1%81%d0%b8%d0%bc-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%8b-%d1%82%d0%b0%d1%89%d0%b8%d0%bc-e-mail/</link>
<pubDate>Mon, 24 Nov 2008 11:36:56 +0000</pubDate>
<dc:creator>bitonic</dc:creator>
<guid>http://bitonic.wordpress.com/2008/11/24/%d0%bf%d0%b0%d1%80%d1%81%d0%b8%d0%bc-%d1%81%d1%82%d1%80%d0%b0%d0%bd%d0%b8%d1%86%d1%8b-%d1%82%d0%b0%d1%89%d0%b8%d0%bc-e-mail/</guid>
<description><![CDATA[Сразу скажу, что эта статейка для программистов на C++. Ходил по форумам и заметил, что народу нужно]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Сразу скажу, что эта статейка для программистов на C++. Ходил по форумам и заметил, что народу нужно отпарсить html страницу и вытянуть оттуда все e-mail. Но почти всегда «глас страждущего в пустыне» остается не услышанным – те, кто знают как парсить – не хотят говорить, а те, кто не знают – дают какие-то общие советы, подчастую, не по теме. Решил частично восполнить этот пробел. Способов парсинга несколько: Boost, PCRE, Td1 и др. Пробовал разобраться с ними, но так как я жутко ленивый, то не хватило сил и мотивации, чтобы вникнуть в архитектурно-шизофренические особенности этих библиотек. Поэтому решил, что лучше самому написать алгоритм парсинга. Для этого я использовал связку C++ (MSVC++ 2008) &#38; STL (моя самая любимая библиотека) . Алгоритм прост: находим в строке символ «@», декрементируем позицию влево от «@» до самого первого символа e-mail и фиксируем начало, инкрементируем позицию вправо от «@» до самого последнего символа e-mail и фиксируем конец, копируем символы с начала до конца, выводим на экран готовый e-mail.</p>
<p>#include &#60;windows.h&#62;<br />
#include &#60;stdio.h&#62;<br />
#include &#60;tchar.h&#62;<br />
#include &#60;iostream&#62;</p>
<p>using namespace std;</p>
<p>string ExtractEmail(string &#38;strIN)<br />
{<br />
string tmpStr;<br />
string::size_type idxAt,idxEmailBegin,idxEmailEnd;<br />
idxAt=strIN.find(&#8220;@&#8221;); //ищем символ &#8220;@&#8221;<br />
if(idxAt!=string::npos)<br />
{<br />
idxEmailBegin=idxAt;<br />
//ищем самый первый символ e-mail<br />
do<br />
{<br />
idxEmailBegin&#8211;;<br />
}while(isalnum(strIN.at(idxEmailBegin)) &#124;&#124; strIN.at(idxEmailBegin)==&#8217;.&#8217; &#124;&#124; strIN.at(idxEmailBegin)==&#8217;-');<br />
idxEmailEnd=idxAt;<br />
//ищем самый последний символ e-mail<br />
do<br />
{<br />
idxEmailEnd++;<br />
if(idxEmailEnd&#62;=strIN.size())<br />
return &#8220;&#8221;;<br />
}while(isalnum(strIN.at(idxEmailEnd)) &#124;&#124; strIN.at(idxEmailEnd)==&#8217;.&#8217; &#124;&#124; strIN.at(idxEmailEnd)==&#8217;-');<br />
string email;<br />
//Копируем в пременную &#8220;email&#8221; все символы<br />
//- с первого по последний<br />
for(UINT i=idxEmailBegin+1; i&#60;idxEmailEnd; i++)<br />
email+=strIN.at(i);<br />
//возвращаем готовый e-mail<br />
return email;<br />
}<br />
else<br />
return &#8220;&#8221;;<br />
}</p>
<p>int _tmain(int argc, _TCHAR* argv[])<br />
{<br />
//строка для парсинга<br />
string rawT=&#8221;&#60;a href= target=_blank&#62;1&#60;/a&#62;my.mail-box@gmal.com&#60;/td&#62;&#8221;;<br />
//получаем e-mail, если он есть<br />
string tmp=ExtractEmail(rawT);<br />
//выводим результат на экран<br />
cout &#60;&#60; tmp.c_str() &#60;&#60; endl;<br />
return 0;<br />
}</p>
<p>В результате программа выводит: my.mail-box@gmal.com</p>
<p>Я человек жадный $:-) , поэтому этот алгоритм не полный (за полный денюжку платить надо, однако) – находит только самый первый e-mail и дальше не ищет. Также в этом алгоритме нет проверки корректности e-mail. Но если ты, читатель, пишешь на C++ программы более сложные нежели «Hello World!» и знаешь что такое рекурсия, то тебе не составит труда усовершенствовать алгоритм до нужной кондиции <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[C ile yazılmış Hello World uygulamasının incelemesi]]></title>
<link>http://xaphtrick.wordpress.com/2008/05/16/c-ile-yazilmis-hello-world-uygulamasini-incelemek/</link>
<pubDate>Fri, 16 May 2008 15:07:49 +0000</pubDate>
<dc:creator>xaph</dc:creator>
<guid>http://xaphtrick.wordpress.com/2008/05/16/c-ile-yazilmis-hello-world-uygulamasini-incelemek/</guid>
<description><![CDATA[Bir önceki yazımda C ile programlamaya başlangıç için basit bir &#8220;Hello World&#8221; uygulaması]]></description>
<content:encoded><![CDATA[Bir önceki yazımda C ile programlamaya başlangıç için basit bir &#8220;Hello World&#8221; uygulaması]]></content:encoded>
</item>
<item>
<title><![CDATA[Ubuntu Gusty sin stdio.h]]></title>
<link>http://rocarvaj.wordpress.com/2008/02/04/ubuntu-gusty-sin-stdioh/</link>
<pubDate>Tue, 05 Feb 2008 02:03:46 +0000</pubDate>
<dc:creator>rocarvaj</dc:creator>
<guid>http://rocarvaj.wordpress.com/2008/02/04/ubuntu-gusty-sin-stdioh/</guid>
<description><![CDATA[Estoy aprendiendo a programar bien en C y después de haber pasado por el clásico &#8220;Hello World!]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Estoy aprendiendo a programar bien en C y después de haber pasado por el clásico &#8220;Hello World!&#8221;, traté de trabajar con archivos. Al compilar mi pequeño programita, gcc me reclamó que no encontraba el archivo stdio.h, que es una librería muy estándar de C. Raro.<br />
La cosa es que hay que instalar el paquete build-essentials, así:</p>
<blockquote><p>%sudo apt-get install build-essential</p></blockquote>
<p>Bueno&#8230; un hint corto y fome, pero útil.</p>
<p>En lo más personal, seguimos esperando a que llegue nuestr@ hij@. Pensamos que llegaría antes del viernes pasado, pero nada. Pese a nuestra ansiedad, estamos tranuquilos porque nuestro bebé está al parecer feliz de la vida en la güatita de la Pame.<br />
Tan feliz, que no quiere salir.</p>
<p>Saludos!</p>
<blockquote></blockquote>
</div>]]></content:encoded>
</item>

</channel>
</rss>
