Break语句不工作

Break statement not working

本文关键字:工作 语句 Break      更新时间:2023-10-16

程序应该将name的字符数存储在变量str_length中(其中name <50个字符,以"。"结尾)我很困惑为什么这段代码只输出第一个字符,这意味着当I = 0时,对于诸如"Jonathan"这样的名字,它会跳出循环。它不应该解析整个字符串,直到找到"。",然后才从for循环中中断吗?

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
 string name;
 int str_length;
 cout << "What's your name" << endl;
 cin >> name;
 for (int i = 0; i < 50; i++)
 {
     cout << name[i];
     if (name[i] == '.')
        str_length = i;
        break;         
 }
 cout << endl;
 system("PAUSE");
 return 0;  
 }

你有:

for (int i = 0; i < 50; i++)
{
    cout << name[i];
    if (name[i] == '.')
       str_length = i;
       break;         
}

实际上是:

for (int i = 0; i < 50; i++)
{
    cout << name[i];
    if (name[i] == '.')
    {
       str_length = i;
    }
    break;         
}

你想:

for (int i = 0; i < 50; i++)
{
    cout << name[i];
    if (name[i] == '.')
    {
       str_length = i;
       break;  
    }       
}

您在每个循环的末尾进行break

您在if条件下缺少{}。因此,break在没有任何条件的情况下执行,因此循环在第一次迭代中退出。

这说明了即使在一行if语句中不使用大括号的危险。我怀疑你这样做了:

 if (name[i] == '.')
    str_length = i;

,然后再添加break。如果你这样做了:

 if (name[i] == '.') { 
    str_length = i;
 }
如果在

前面,那么在花括号内添加换行符是很自然的,这样就不会出现这个错误了。