Мне было поручено обновить некоторый код C до C ++, и мне было любопытно,
#include Я хочу сканировать строки вроде . Я написал небольшую программу для проверки: компиляция дает и результат . Если я изменю его на , я получу нет жалоб на компилятор, но все же Я знаю, что проблема во втором токене, потому что дает Но я хочу использовать условие завершения для второго токена. Как мне это сделать? "[25, 28] => 34"
#include <cstdlib>
#include <iostream>
int main() {
char* line = "[25, 28] => 34";
char a1[100], a2[100];
int i;
sscanf(line, "[%[^,], %[^\]] => %i", a1, a2, &i);
std::cout << "a1 = " << a1 <<"\na2 = " << a2 << "\ni = "<<i <<"\n";
return 0;
}
warning: unknown escape sequence '\]'
a1 = 25
a2 = 28
i = -1073746244
sscanf(line, "[%[^,], %[^]] => %i", a1, a2, &i);
a1 = 25
a2 = 28
i = -1073746244
sscanf(line, "[%[^,], %[0123456789]] => %i", a1, a2, &i);
a1 = 25
a2 = 28
i = 34