2013-10-28 4 views
0
#include <iostream> 
#include <cstdlib> 
#include <cstring> 
#include <ctype.h> 
#include <cmath> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
char buffer[100]= {}; 
int length = 0; 

cout << "Enter a string: "; 

do 
{ 
    cin >> buffer; 
} 
while(cin.eof()); 

length = strlen(buffer); 
int squareNum = ceil(sqrt(length)); 

cout << squareNum; 
cout << buffer; 

} 

기본적으로 내가하려는 것은 입력 한 문자열로 문자 배열을 채우는 것입니다. 그러나 공간이 나타날 때까지 배열에 쓰기 만한다고 생각합니다.입력 내용이 제 배열에 제대로 쓰여 있습니까?

왜 공백에서 멈추고 있습니까? .eof 루프를 사용하는 것이 확실합니다.

답변

1
while(cin.eof()); 

한 단어를 읽은 후 eof()에있을 가능성이 없습니다. 당신은

while(cin >> buffer); 

또는 같은 루프 뭔가 더 나은의 문자 배열과 분배 및 stringgetline를 사용

while(! cin.eof()); 

이상 제대로을 원한다.

0

당신은 왜 당신이 시도하지 않는 사용자의 입력이 공백 구분 기호로 분리되지 않도록하고

0

대신 cin.eof()를 사용하여 모든 라인의 예를

std::getline (std::cin,name)

를 얻을 수 std::getline()을 사용할 수 있습니다 다음과 같습니다.

std::string a; 

while (std::getline(std::cin, a)) 
{ 
    //... 
} 
관련 문제