-2
我試圖挽救網站的源代碼,以向量,其中的源代碼的每一行是一個新的向量元素,因爲我只需要在我的程序使用一個特定行(編號47) 。任何想法如何做到這一點?保存網站的源代碼,以矢量<string>
我試圖挽救網站的源代碼,以向量,其中的源代碼的每一行是一個新的向量元素,因爲我只需要在我的程序使用一個特定行(編號47) 。任何想法如何做到這一點?保存網站的源代碼,以矢量<string>
負載從URL中的數據。 使用捲曲:
std::vector<char> LoadFromUrl(const std::string& url)
{
struct Content
{
std::vector<char> data;
static size_t Write(char * data, size_t size, size_t nmemb, void * p)
{
return static_cast<Content*>(p)->WriteImpl(data, size, nmemb);
}
size_t WriteImpl(char* ptr, size_t size, size_t nmemb)
{
data.insert(end(data), ptr, ptr + size * nmemb);
return size * nmemb;
}
};
Content content;
CURL* curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &content);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &Content::Write);
curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
curl_easy_perform(curl);
content.data.push_back('\0');
return content.data;
}
記號化使用的strtok或提高標記生成器或您自己的實現數據:
std::vector<std::string> LoadLines(const std::string& url)
{
std::vector<char> content = LoadFromUrl(url);
std::vector<std::string> lines;
for(char* token = strtok(&content.front(), "\n");
token; token = strtok(0, "\n"))
{
lines.push_back(std::string(token));
}
return lines;
}
int main()
{
std::vector<std::string> lines = LoadLines(
"http://stackoverflow.com/questions/10773009/save-sites-source-code-to-vectorstring");
std::copy(begin(lines), end(lines), std::ostream_iterator<std::string>(std::cout, "\n"));
}
爲什麼存儲整個事情,如果你已經知道你需要的行號。 –
@RedSerpent有沒有辦法在字符串中只保存一行? –
@LuchianGrigore我並不真正熟悉嫋嫋,沒有一個主意,找 –