Это должно быть. ANSI/ст¦не¦рт ISO указывает в [1 112] 21.3.3 basic_string
способность :
size_type size() const;
Возвраты: количество подобных символу объектов в настоящее время в строке.
bool empty() const;
Возвраты:
size() == 0
Однако в пункте 18 21.3.1 basic_string
конструкторы это указывает, что оператор присваивания типа символов использует traits::length()
для установления длины управляемой последовательности, таким образом, Вы могли закончить с чем-то странным при использовании другой специализации std::basic_string<>
.
я думаю, что 100%-й корректный оператор то, что
(str.empty() == (str == std::string()))
или что-то как этот. Если Вы не сделали ничего странного, то std::string("")
и std::string()
должен быть эквивалентен
, Они логически подобны, но они тестируют на разные вещи. str.empty()
проверяет, пуста ли строка, где другой проверяет на равенство против пустой строки C-стиля. Я использовал бы, какой бы ни более подходит для того, что Вы пытаетесь сделать. Если Вы хотите знать, пуста ли строка, то используйте str.empty()
.
В следующем примере кода показано, как создать EncoderParameter с помощью конструктора EncoderParameter. Чтобы запустить этот пример, вставьте код и вызовите метод VaryQualityLevel
.
В этом примере требуется файл изображения с именем TestPhoto.jpg, расположенный по адресу c:.
private void VaryQualityLevel()
{
// Get a bitmap.
Bitmap bmp1 = new Bitmap(@"c:\TestPhoto.jpg");
ImageCodecInfo jgpEncoder = GetEncoder(ImageFormat.Jpeg);
// Create an Encoder object based on the GUID
// for the Quality parameter category.
System.Drawing.Imaging.Encoder myEncoder =
System.Drawing.Imaging.Encoder.Quality;
// Create an EncoderParameters object.
// An EncoderParameters object has an array of EncoderParameter
// objects. In this case, there is only one
// EncoderParameter object in the array.
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder,
50L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityFifty.jpg", jgpEncoder,
myEncoderParameters);
myEncoderParameter = new EncoderParameter(myEncoder, 100L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityHundred.jpg", jgpEncoder,
myEncoderParameters);
// Save the bitmap as a JPG file with zero quality level compression.
myEncoderParameter = new EncoderParameter(myEncoder, 0L);
myEncoderParameters.Param[0] = myEncoderParameter;
bmp1.Save(@"c:\TestPhotoQualityZero.jpg", jgpEncoder,
myEncoderParameters);
}
private ImageCodecInfo GetEncoder(ImageFormat format)
{
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
{
if (codec.FormatID == format.Guid)
{
return codec;
}
}
return null;
}
Ссылка: http://msdn.microsoft.com/en-us/library/system.drawing.imaging.encoderparameter. aspx
Ознакомьтесь со статьей MSDN , как установить уровень сжатия JPEG .
Вам необходимо использовать другую перегрузку Save (), которая принимает ImageEncoder и его параметры.