C++ 中断语句不工作
这个程序应该将name的字符数存储在变量stru_length中(其中name<50个字符以“.”结尾)。我不明白为什么这段代码只会对诸如“Jonathan”这样的名称吐出第一个字符,这意味着当I=0时它会从循环中中断。它不应该在找到“.”之前解析字符串吗,只有这样才能打破for循环C++ 中断语句不工作,c++,break,C++,Break,这个程序应该将name的字符数存储在变量stru_length中(其中name
#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;
}
#包括
#包括
使用名称空间std;
int main()
{
字符串名;
int str_长度;
姓名;
对于(int i=0;i<50;i++)
{
cout您在if
条件周围缺少{}
。因此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这说明了即使对一行if语句也不使用大括号的危险。我怀疑是您这样做的:
if (name[i] == '.')
str_length = i;
然后在以后添加了中断符。
。如果已执行此操作:
if (name[i] == '.') {
str_length = i;
}
前面,在括号内加上断点是自然的,你就不会有bug。
缩进在C++中是没有意义的。你忘记了代码> {}
环绕if
的主体。不过,您正在重新设计string的查找方法。另外std::string
的标题是
。请参见,您不应假设输入至少为50个字符。字符串可以有任何大小,并且大小()
method告诉你这一点。别忘了接受你得到的答案之一,编程的微妙之处……谢谢大家,这是一个非常愚蠢的错误。不是愚蠢的错误!但通过更好的实践可以避免——始终使用大括号,即使是一行,这样你的代码也很容易修改。
if (name[i] == '.')
str_length = i;
if (name[i] == '.') {
str_length = i;
}