30 Ocak 2018 Salı

std::quoted

Giriş
Şu satırı dahil ederiz.
#include <iomanip>
C++14 ile geliyor. Escape edilmiş karakterlerin \\ veya \" gibi escape edilmiş hallerini muhafaza eder.

Örnek
Şöyle yaparız.
std::cout << std::quoted(R"(c:\path\to\file)") << std::endl;
std::cout << std::quoted("c:\\path\\to\\file") << std::endl;
Çıktı olarak şunu alırız.
"c:\\path\\to\\file"
"c:\\path\\to\\file"
Örnek
Şöyle yaparız.
std::istringstream line1(R"(1500,"Rev, H., Tintin, K.H. Ken",204400,350)");

char ch;
struct { int id;
  std::string full_title;
  int64_t some;
  int64_t data;
} record;

if ( (line1 >> record.id) 
  && (line1 >> ch && ch == ',')
  && (line1 >> std::quoted(record.full_title))
  && (line1 >> ch && ch == ',')
  && (line1 >> record.some)
  && (line1 >> ch && ch == ',')
  && (line1 >> record.data))
{
  std::cout << "Parsed: \n";
  std::cout << "  record.id = " << record.id << "\n";
  std::cout << "  record.full_title = " << record.full_title << "\n";
  std::cout << "  record.some = " << record.some << "\n";
  std::cout << "  record.data = " << record.data << "\n";
}
Çıktı olarak şunu alırız
Parsed: 
  record.id = 1500
  record.full_title = Rev, H., Tintin, K.H. Ken
  record.some = 204400
  record.data = 350

Hiç yorum yok:

Yorum Gönder