#c# #c
#c# #c
Вопрос:
Может кто-нибудь, пожалуйста, помочь мне в преобразовании кода StrTok в C # из C ?
strFileName = StringFunctions.StrTok(strFileToCopy, "\");
strFileName = StringFunctions.StrTok(null, "");
Пробовал код:
string strFileName = "";
string[] FileNames = Regex.Split(strFileToCopy, "\");
Комментарии:
1. Можете ли вы показать нам, что вы уже пробовали? Если вы ничего не пробовали, это может быть хорошей отправной точкой
2. Итак, я использовал разделение для StrTok.. Это правильный путь??? string strFileName = «»; string[] Имена файлов = Регулярное выражение.Split(strFileToCopy, «\»);
3. Что было не так с
Split
?4. Я хотел понять, как StrTok можно использовать лучше? с помощью приведенного выше кода?
5. Если вы действительно получаете имя файла, используйте
Path.GetFileName(…)
Ответ №1:
На основе описания и примера StrTok
здесь: http://www.cplusplus.com/reference/cstring/strtok /, это кажется * примерно эквивалентным Split
методу string
:
var str = "- This, a sample string.";
var pch = str.Split(" ,.-".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
foreach (var result in pch)
{
Console.WriteLine(result);
}
Это выводит:
Это
a
пример
строка
который соответствует образцу со связанной страницы strtok.
* Я думаю, разница в том, что для получения всех записей с помощью strtok вам нужно вызывать его повторно, передавая NULL
для последующих вызовов, тогда как C # Split
просто возвращает массив токенов.
Как предлагали другие в комментариях, если вы просто хотите получить имя файла, вы должны использовать Path.GetFileName
вместо этого (вам нужно будет добавить using System.IO;
):
string str = @"c:usersjohndesktoptest.txt";
Console.WriteLine(Path.GetFileName(str));
Выводит:
test.txt
Ответ №2:
Вы можете использовать stringstream из std
std::istringstream ss("This is the line to tokenize");
std::string token;
while(std::getline(ss, token, ' '))
std::cout << "line: " << token << "n";
// Out:
/*
This
is
the
line
to
tokenize
*/
Комментарии:
1. Это не отвечает на вопрос «как мне преобразовать этот код strtok в c #»!