Break语句不起作用

0 c++ break

这个程序应该在变量str_length中存储name的字符数(其中name <50个字符以"."结尾)我很困惑为什么这个代码只吐出第一个字符,这意味着它从循环中断开对于诸如"乔纳森"之类的名称,i = 0.它不应该通过字符串解析,直到它找到".",然后才从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;  
 }
Run Code Online (Sandbox Code Playgroud)

sse*_*ell 5

你有:

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

实际上是:

for (int i = 0; i < 50; i++)
{
    cout << name[i];

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

    break;         
}
Run Code Online (Sandbox Code Playgroud)

你要:

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

你正在break每个循环结束.