c++ - 如何跳出循环?

标签 c++ loops visual-c++ while-loop

对于我程序的一部分,我收到一个字符数组并检查是否所有字符都是整数。

当其他程序没有发送整型字符串时,例如 asdf,它会捕获它。但随后它在退出之前循环四次。

如何在读取到第一个字符不是整数后立即继续退出该段?我尝试了很多东西,但有一段时间一直被同样的问题困扰。我觉得这是一个简单的修复。

编辑:我希望它只打印收到的传入连接和无效的第一部分。然后从那里继续。

    int iRecvB = recv(acceptSocket, recvSerial, STRLEN, 0);
    recvSerial[iRecvB] = '\0';
    if (iRecvB > 0)
    {
        for (int n = 0; n < iRecvB; n++)
        {
            if (recvSerial[n] < '0' || recvSerial[n] > '9')
            {
                isNumber = false;
            }
            if (!isNumber)
            {
                int iSend = send(acceptSocket, "no", 2, 0);
                cout << "\nIncoming connection received.\n" << "Data received:" << endl;
                cout << "\tSerial: " << recvSerial << endl;
                cout << "\t   INVALID\n" << endl;
                if (iSend == SOCKET_ERROR)
                {
                    cerr << "ERROR: Failed to send message11111\n";
                    cleanup(acceptSocket);
                    return 1;
                }
            }
        }// END OF FOR LOOP FOR NUM CHECK 
    }
    else if (iRecvB == 0)
    {
        cout << "Connection closed\n";
        cleanup(acceptSocket);
        return 0;
    }
    else
    {
        cerr << "ERROR: Failed to receive message\n";
        cleanup(acceptSocket);
        return 1;
    }

这是控制台显示的内容:

Incoming connection received.
Data received:
        Serial: asdf
           INVALID


Incoming connection received.
Data received:
        Serial: asdf
           INVALID


Incoming connection received.
Data received:
        Serial: asdf
           INVALID

ERROR: Failed to send message11111

C:\Users\Admin\Desktop\Activation\ActivationServer\Debug>

最佳答案

您可以使用 break 关键字。

例如:

for (int n = 0; n < iRecvB; n++)
{
    if (recvSerial[n] < '0' || recvSerial[n] > '9')
    {
        isNumber = false;
    }
    if (!isNumber)
    {
        int iSend = send(acceptSocket, "no", 2, 0);
        cout << "\nIncoming connection received.\n" << "Data received:" << endl;
        cout << "\tSerial: " << recvSerial << endl;
        cout << "\t   INVALID\n" << endl;
        if (iSend == SOCKET_ERROR)
        {
            cerr << "ERROR: Failed to send message11111\n";
            cleanup(acceptSocket);
            return 1;
        }

        break; // <-- HERE
    }
}// END OF FOR LOOP FOR NUM CHECK 

关于c++ - 如何跳出循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21694144/

相关文章:

c++ - 如何提取字符串中的特定值

c++ - std::ostringstream 打印 c 字符串的地址而不是其内容

Java:基于舍入的循环和打印

java - 尝试测试输入有效性

C++ Int 似乎没有初始化并抛出异常 : read access violation

c++ - 在按钮上运行外部 .exe 单击 c++。如何?

c++ - 如何引用随机生成器?

c++ - 在 Visual Studios 中创建 sqlite3.lib 文件/使用 sqlite3

android - 为 android 64 位 arm 架构构建 native 代码

JavaScript 在 for 循环中生成包含 <li> 内容的 HTML <ul> 列表