1

私は次の文字列を持っています:

const char *str = "\"This is just some random text\" 130 28194 \"Some other string\" \"String 3\""

整数はもちろん整数が変化するので取得したい28194のでできませんstrstr("20194")

だから私は文字列のその部分を取得するための良い方法は何でしょうか?

私はすでに正規表現に一致する手順を持っているものを使用することを考えて#include <regex.h>いましたが、Cの正規表現がPOSIXスタイルの表記を使用するとどのように見えるかわかりません。[:alpha:]+[:digit:]パフォーマンスが問題になるかどうか。それとも、それを使用する方が良いstrchr,strstrでしょうか?

どんなアイデアでも喜ばれます

4

1 に答える 1

0

正規表現を使用する場合は、次を使用できます。

const char *str = "\"This is just some random text\" 130 28194 \"Some other string\" \"String 3\"";
regex_t re;
regmatch_t matches[2];
int comp_ret = regcomp(&re, "([[:digit:]]+) \"", REG_EXTENDED);
if(comp_ret)
{
    // Error occured.  See regex.h
}
if(!regexec(&re, str, 2, matches, 0))
{
    long long result = strtoll(str + matches[1].rm_so, NULL, 10);
    printf("%lld\n", result);
}
else
{
    // Didn't match
}
regfree(&re);

あなたは他のアプローチがあるということは正しいです。

編集:オプションではない繰り返しを使用し、より多くのエラーチェックを表示するように変更されました。

于 2010-04-10T17:36:21.883 に答える