Я создаю небольшой сценарий для xbox 360 с использованием c ++, и поэтому я не могу использовать какие-либо библиотеки, такие как libcurl, для чтения веб-сайта, и мне было интересно, если кто-нибудь из вас, ребята, узнает, как я могу кодировать этот кусок кода C #:
public static string[] readFromPaste(string string_3)
{
StreamReader reader = new StreamReader(WebRequest.Create(string_3).GetResponse().GetResponseStream());
string str = reader.ReadLine();
string[] strArray = new string[0xff];
for (int i = 0; (str = reader.ReadLine()) != null; i++)
{
string[] strArray2 = str.Split(Environment.NewLine.ToCharArray());
strArray[i] = strArray2[0];
}
return strArray;
}
в C ++ без используя какие-либо библиотеки, такие как libcurl? Я знаю, что это возможно, я просто не могу понять это! Любая помощь очень ценится, так как я так долго зацикливался на том, как читать веб-сайт на c ++ по сценарию xbox!
Консольное приложение C ++. Net / CLI:
Вы на правильном пути с StreamReader()
, Я сделал две версии решения, используя StreamReader()
,
Версия первая: этот код открывает WebClient()
а затем передает данные через него в StreamReader()
и сохраняет результат построчно в массиве индексированных строк.
#include "stdafx.h"
#using <System.dll>
using namespace System;
using namespace System::Net;
using namespace System::IO;
int main()
{
array<String^>^ linefrompastebin = gcnew array<String^>(100000);
int i = 0;
int maxLines = 0;
String^ url = "http://pastebin.com/f7KKzVyf";
WebClient^ client = gcnew WebClient;
Stream^ data = client->OpenRead(url);
Console::WriteLine("Reading HTML at : " + url + " \n\n");
Stream^ stream = client->OpenRead(url);
StreamReader^ reader = gcnew StreamReader(data);
linefrompastebin[0] = "";
//Store lines from HTML into string
while ((linefrompastebin[i] = reader->ReadLine()) != nullptr){
i++;
}
maxLines = i;
for (i = 0; i < maxLines; i++){
Console::WriteLine("Line " + i + " = " + linefrompastebin[i]);
}
Console::WriteLine("\n\n");
Console::ReadLine();
return 0;
}
Версия вторая:
Этот код открывает WebClient()
а затем передает данные через него в StreamReader()
и сохраняет результат только в одном строковом объекте, а не в строковом массиве.
#include "stdafx.h"
#using <System.dll>
using namespace System;
using namespace System::Net;
using namespace System::IO;
int main()
{
WebClient^ WebBrowserClient = gcnew WebClient;
String^ url = "http://pastebin.com/f7KKzVyf";
WebBrowserClient->Headers->Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");
Stream^ data = WebBrowserClient->OpenRead(url );
StreamReader^ reader = gcnew StreamReader(data);
String^ s = reader->ReadToEnd();
Console::WriteLine(s);
data->Close();
reader->Close();
Console::ReadLine();
}
Других решений пока нет …