Альтернатива использованию goto
у меня есть кусок кода, который я использовал goto, но мне не нужно его использовать. Может ли кто-нибудь предложить мне способ избежать этого?
start: while (std::getline(file, line)) { std::istringstream iss(line); std::size_t space = line.find(" ", 0); if (!isspace(line[0])) { iss.clear(); } else { int i; for (i = 0; i <= 12; i++) { if (isalpha(line[i])) { iss.clear(); goto start; } } iss >> abc.hdhf;
Что я уже пробовал:
Я попробовал использовать функцию, но она не работает так, как нужно
Patrice T
Попробуйте опубликовать полный код.
phil.o
Пожалуйста, постарайтесь также рассказать нам, чего вы пытаетесь достичь, потому что некоторые части того, что вы показали, представляют собой некоторые несоответствия. Например, вы проверяете, является ли !isspace(line[0])
- пока все идет хорошо. Но если это пробел (как, по-видимому, указывает семантика кода), то вы снова проверяете его, является ли он буквенно-цифровым символом; для первого символа line
- этого никогда не случится.
В любом случае, я считаю, что вы должны попытаться рассказать нам, чего вы хотите достичь, и показать нам недостающую часть кода - по крайней мере, до заключительной скобки цикла while-чтобы мы могли дать вам осмысленный ответ.
[no name]
Альтернатива:while (Expression_1)
{
while(Expression_2)
{
// do something here
// break instead of goto
}
}
Member 13475664
я нашел решение, сравнив длину строки, и наконец-то смог избежать нежелательных строк.