2011-05-04 3 views
18

사용자가 콘솔을 통해 입력하는 입력을 저장하려고합니다. 그래서 나는 "enter"와 공백을 포함시켜야합니다.전체 입력 행 읽기

그러나 cin은 첫 번째 공백 다음에 입력을 중단합니다.

CTRL + Z를 누르기 전까지는 전체 줄을 읽는 방법이 있습니까?

+0

가능한 복제에의 getline 기능을 사용할 수 있습니다. http://stackoverflow.com/questions/2765462/how-to-cin-space-in-c – mkaes

+0

검색 중에이 게시물을 찾지 못했습니다. 만약 내가 그랬다면, 또 다른 하나를 게시 할 것이다 ^^ 죄송합니다. 다음 번에 더 많이 보려고합니다. – Katia

답변

38

거기에 CTRL + Z를 누르기 전까지는 readLines와 같은 방법이 있습니까 ??

네, 정확히 같은, 무료 std::getline 기능 (하지 같은 이름의 istream 방법!)를 사용하여 :

string line; 

while (getline(cin, line)) { 
    // do something with the line 
} 

이 읽 라인 (공백 포함, 그러나 끝나는 줄 바꿈없이) 입력이 끝나거나 cin이 오류를 신호 할 때까지 입력에서.

+0

그래서 5 라인이 CTRL + Z로 끝나지 않았 으면 라인에 무엇이 들어 있는지, 라인 변수로 갈 것인가? ? 이전에 시도한 경우 문자열 변수에 대한 입력이 공백 뒤에 저장되지 않습니다 .. 내가 getline이 아닌 cin을 사용하고 있었습니까 ?? – Katia

+1

@katia'getline' 만 전체 라인을 읽습니다. 'cin >> line'을 통해 문자열을 입력하면 첫 번째 공백까지만 읽습니다. –

+0

지금 받으십시오. 백만 분의 일입니다. – Katia

3
#include <iostream> 
#include <string> 
using namespace std; 

int main() 
    string s; 
    while(getline(cin, s)) { 
     // do something with s 
    } 
} 
0

내 프로그램의 경우 Ctrl + X를 누를 때까지 입력의 모든 단일 문자를 읽는 다음 코드 비트를 작성했습니다. 여기에 코드입니다 : Ctrl + Z를 들어

char a; 
string b; 
while (a != 24) 
{ 
cin.get(a); 
b=b+a; 
} 
cout << b; 

는이를 입력 :

char a; 
string b; 
while (a != 26) 
{ 
cin.get(a); 
b=b+a; 
} 
cout << b; 

나는 UNIX 시스템에있어로 클릭률 (CTR) + Z 솔루션이 작동하는지 확인하고, CTRL 수 없습니다 + z가 프로그램을 종료합니다. 그러나 Windows에서는 작동하지 않을 수도 있습니다. 너 스스로 볼 필요가있어.

+0

버퍼 오버 플로우에 대해 스스로를 설정하고 있습니다. 전혀 안전하지 않습니다. – thecoshman

-1
#include <string> 
#include <iostream> 

int main() 
{ 

    std::cout << "enter your name: "; 

    std::string name; 

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

    return 0; 

} 
+1

Welcome to Stack Overflow! 우리가 당신의 대답에 대해 당신에게 감사하지만 그것이 다른 답변들 위에 부가적인 가치를 제공했다면 더 좋을 것입니다. 이 경우 다른 사용자가 이미 해당 솔루션을 게시했기 때문에 귀하의 대답은 추가적인 가치를 제공하지 않습니다. 이전 답변이 도움이 되었다면 동일한 정보를 반복하는 대신 투표를해야합니다. –

0

당신은 C++

#include<iostream> 
using namespace std; 
int main() 
{ 
    char msg[100]; 
    cin.getline(msg,100); 
    return 0; 
}