이 프로그램은 str_length 변수에 이름의 문자 수를 저장해야합니다 (여기서 이름은 <이고 "."로 끝나는 50 자입니다). 왜이 코드가 첫 번째 문자 만 뱉어 버리는 지, "Jonathan"과 같은 이름의 경우 i = 0 일 때 루프에서 깨집니다. "."을 찾을 때까지 문자열을 통해 파싱하지 않아야하며, 그 다음에 for 루프를 끊어야합니다.Break 문이 작동하지 않습니다.
#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;
}
C++에서는 들여 쓰기가 의미가 없습니다. 'if'의 본문에'{}'을 잊어 버렸습니다. – Nemo
그러나 문자열의 find 메소드를 재 작성하고 있습니다. 또한'std :: string'에 포함 할 헤더는''입니다. http://www.cplusplus.com/reference/string/string/find/ –
UncleBens
또한 입력이 50 자 이상이라고 가정하지 마십시오. 문자열은 어떤 크기라도 가질 수 있으며,'size()'메쏘드는 그것을 알려줍니다. – UncleBens