私はCでコーディングしており、このような値で構成される文字列を持っています
e=3213213123
n=321312321321321
これらの値を文字列からint e
割り当てるために正規表現を使用するにはどうすればよいですか?int n
その部分をスキップして"e="
、 を使用しますstrtoll
。正規表現は必要ありません。
文字列を変数名に直接一致させる方法はありません。変数名は厳密にはコンパイル時の概念であり、実行時には存在しません。
マッチング (おそらく実行時のリストまたは変数名の配列に対して)、割り当てられる値の解析、および最後に個別のステップとしての割り当てを行う必要があります。
ここで正規表現を使用する意味はほとんどありません。次のような単純なものです。
char vname[32];
int value;
if(sscanf("%30s=%d", vname, &value) == 2)
{
if(strcmp(vname, "e") == 0)
e = value;
else if(strcmp(vname, "n") == 0)
n = value;
else
fprintf(stderr, "**Unknown variable name '%s'\n", vname);
}
するべきです。上記は単に変数名の「リスト」をハードコードしているだけであり、多数の (3 つ以上の) 変数をサポートする必要がある場合、あまりスケーラブルではないことに注意してください。
atoi()
文字列を整数に変換します。
strtol()
- 文字列を長整数に変換します。
これらの関数の man ページを読み、必要に応じて選択してください。
atoi() 関数は、nptr が指す文字列の最初の部分を int に変換します。動作は同じです
strtol(nptr, (char **) NULL, 10);
ただし、atoi() はエラーを検出しません。