Это воздействует на целое дерево процесса IIS, в противоположность просто Вашим пулам приложений.
C:\>iisreset /?
IISRESET.EXE (c) Microsoft Corp. 1998-1999
Usage:
iisreset [computername]
/RESTART Stop and then restart all Internet services.
/START Start all Internet services.
/STOP Stop all Internet services.
/REBOOT Reboot the computer.
/REBOOTONERROR Reboot the computer if an error occurs when starting,
stopping, or restarting Internet services.
/NOFORCE Do not forcefully terminate Internet services if
attempting to stop them gracefully fails.
/TIMEOUT:val Specify the timeout value ( in seconds ) to wait for
a successful stop of Internet services. On expiration
of this timeout the computer can be rebooted if
the /REBOOTONERROR parameter is specified.
The default value is 20s for restart, 60s for stop,
and 0s for reboot.
/STATUS Display the status of all Internet services.
/ENABLE Enable restarting of Internet Services
on the local system.
/DISABLE Disable restarting of Internet Services
on the local system.
Почему бы не использовать std :: basic_string из STL как фиксированный строковый класс?
Вы можете использовать конструктор
basic_string(
size_type _Count,
value_type _Ch,
const allocator_type& _Al = Allocator ( )
);
в качестве инициализатора.
Позднее редактирование: Пример:
std::string my10CharStringInitializedWithSpace( 10, ' ');
На сегодняшний день наиболее близким приближением является boost :: array
Стиль C массив символов?
char label[10] = "a string";
Вероятно, в boost есть что-то, что обеспечивает это (ближайший, который я лично видел, - Boost.Array, которого недостаточно). Однако, если вы просто хотите смоделировать «важное подмножество» std :: string
, не очень сложно создать эквивалент фиксированной длины:
template <size_t N>
class fixed_string
{
// ... interface looks like std::string
};
Для тех, кто спрашивает, зачем вообще нужно делать в общем, главное преимущество - избежать выделения памяти без потери большей части полезного std :: string
API. Если есть другой способ сделать это с помощью std :: allocator
, мне было бы интересно узнать.
Если я правильно вас понял, вы не хотите использовать std :: string
, потому что боитесь, что он может незаметно распространиться на вас. Я вижу несколько вариантов:
Использовать необработанную строку в стиле C и функции из cstdio
, которые принимают аргумент длины (например, fgets
).
Используйте a std :: vector
.
Как насчет наследования std :: string
в частном порядке, а затем раскрытия меньшего интерфейса с с использованием
и написания собственных функций << и >>?
Я использовал что-то вроде этого для струн, выделенных на стеке или как часть другого объекта. Который в выброшении становится символом *
#ifdef DEBUG
#define STR_DEBUG
#endif
#define FIXED_STRING( maxSize ) ReservedString<maxSize> _Tmp##__LINE__;
class FixedString{
public:
FixedString& operator =( char const * const pStr );
//FixedString& operator =( FixedString const &pStr );
operator const char*() const { return mStr; }
const char* cStr() const { return mStr; }
FixedString& operator +=(const char *pStr);
bool equals( const char *pStr );
bool beginsWith( const char *pStr );
/// rises ASSERT if not enough
void ensureEnoughForNMore( int NMoreSymbols );
protected:
char *mStr;
#ifdef STR_DEBUG
ui16 mMaxLength;
#endif
private:
#ifdef STR_DEBUG
FixedString( char *str, ui16 maxLength ): mStr(str), mMaxLength(maxLength) {}
#else
FixedString( char *str ): mStr(str) {}
#endif
template<int>
friend class ReservedString;
};
template <int MAX_LENGTH> class ReservedString{
public:
operator FixedString() {
#ifdef STR_DEBUG
return FixedString( mBuf, MAX_LENGTH );
#else
return FixedString( mBuf );
#endif
}
private:
char mBuf[MAX_LENGTH+1];
};