Автосделайте и файлы с тем же именем

String.Trim

Удаляет все начальные и конечные пробельные символы из текущего объекта String.

Использование:

txt = txt.Trim();

Если это не работает, весьма вероятно, что «пробелы» - это не пробелы, а какой-то другой непечатный или пробельный символ, возможно, табуляции. В этом случае вам нужно использовать метод String.Trim, который принимает массив символов:

  char[] charsToTrim = { ' ', '\t' };
  string result = txt.Trim(charsToTrim);

Источник

Вы можете добавить в этот список как и когда вы встречаете больше места, как символы, которые находятся во ваших входных данных. Хранение этого списка символов в вашей базе данных или конфигурационном файле также будет означать, что вам не нужно перестраивать приложение каждый раз, когда вы сталкиваетесь с новым символом для проверки.

5
задан Renato Aquino 28 May 2009 в 11:51
поделиться

2 ответа

Вы можете запросить создание объектов в их соответствующих подкаталогах с помощью

AUTOMAKE_OPTIONS = subdir-objects
11
ответ дан 18 December 2019 в 09:10
поделиться

Другой вариант, помимо subdir-objects , состоит в том, чтобы дать каждому подпроекту несколько настраиваемых флагов сборки для каждого проекта. Когда вы это сделаете, automake изменяет свои правила именования * .o, добавляя целевое имя к имени модуля. Например, это:

mylib_la_CXXFLAGS=$(AM_CXXFLAGS)
mylib_la_SOURCES=a.cpp b.cpp

приведет к выходным файлам mylib_la-ao и mylib_la-bo, а не ao и bo. Таким образом, у вас может быть два разных проекта с одним и тем же каталогом вывода, каждый из которых имеет, скажем, файл b.cpp , и их выходы не конфликтуют.

Обратите внимание, что я сделал это, установив для CXXFLAGS конкретного проекта значения AM_CXXFLAGS, которые уже собирался использовать automake. Automake недостаточно умен, чтобы обнаружить этот трюк и использовать более короткие имена * .o. Если случится так, что вам действительно нужны параметры сборки для каждого проекта, вы, конечно, можете сделать это вместо этого взлома.

Там ' sa весь список переменных automake, которые при установке для каждого исполняемого файла дают такой же эффект. Так, например, может быть, для одного подпроекта уже требуются специальные флаги ссылок, поэтому вы задаете ему что-то вроде:

mylib_la_LDFLAGS=-lfoo

Это даст вам файлы с префиксом * .o, как это сделал трюк AM_CXXFLAGS, только теперь вы «законно» используете эта функция, вместо того, чтобы обманным путем заставить Automake сделать это.

Между прочим, это плохой стиль autoconf - изменять способ сборки вашей программы, основанный исключительно на ОС, для которой она создается. Хороший стиль autoconf - проверять только особенности конкретной платформы, а не платформы целиком, потому что платформы меняются. Сегодня FreeBSD может действовать определенным образом, но, возможно, в следующем выпуске она скопирует функцию Linux, которая избавит вас от необходимости создавать вашу программу двумя разными способами. Или, возможно, функция, которую вы используете сегодня, устарела и будет удалена в следующей версии.

В autotools, кузнечик, есть сорок лет мудрости переносимого Unix-программирования. «Возможности», которые я привел выше , случились в прошлом и, безусловно, будут повторяться снова. Тестирование отдельных функций - самый быстрый способ справиться с постоянно меняющимися платформами.

Вы также можете получить неожиданные бонусы от этого подхода. Например, возможно, вашей программе для работы требуются две непереносимые функции. Скажем, во FreeBSD это функции A и B, а в Linux - это функции X и Y; A и X - аналогичные механизмы, но с разными интерфейсами, и одинаковы для B и Y. Возможно, функция A взята из исходных BSD, и находится в Solaris, потому что он имеет корни BSD из SunOS в 80-х, и Solaris также имеет функцию Y из его редизайна на основе System V в начале 90-х. Путем тестирования этих функций ваша программа может работать и на Solaris, потому что у нее есть функции, которые требуются вашей программе, но не в той же комбинации, что и на FreeBSD и Linux.

7
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: