2011-03-28 6 views
14

다음은 현재 사용중인 C++ 코드입니다. 내가 어떻게 코드 라인을 작성 알고 싶습니다. 여전히 cin.getline(y) 또는 다른 것을 사용합니까? 확인했지만 아무것도 찾을 수 없습니다. 실행할 때 출력 할 때 전체 라인 대신 단어 만 입력하면됩니다. 이것이 내가 도움이 필요한 것입니다. 코드에서 설명했습니다.cin을 사용하여 사용자로부터 완전한 라인을 읽는 방법?

#include <iostream> 
#include <cstdlib> 
#include <cstring> 
#include <fstream> 

using namespace std; 

int main() 
{ 
    char x; 

    cout << "Would you like to write to a file?" << endl; 
    cin >> x; 
    if (x == 'y' || x == 'Y') 
    { 
     char y[3000]; 
     cout << "What would you like to write." << endl; 
     cin >> y; 
     ofstream file; 
     file.open("Characters.txt"); 
     file << strlen(y) << " Characters." << endl; 
     file << endl; 
     file << y; // <-- HERE How do i write the full line instead of one word 

     file.close(); 


     cout << "Done. \a" << endl; 
    } 
    else 
    { 
     cout << "K, Bye." << endl; 
    } 
} 
+3

제목에 더 잘 반영하고 싶을 수 있습니다. 또한 질문을 분명히해야하며, 실제로 무엇을 요구하고 있는지 분명하지 않습니다. –

+0

K done, Thanks :) – FuzionSki

+2

문제는'cin >> y'는 사용자가 입력 한 행의 첫 번째 단어 만 저장한다는 것이고, asker는 y에 전체 행을 저장하는 방법을 알고 싶어하므로'file <

답변

9
#include <iostream> 
#include <cstdlib> 
#include <cstring> 
#include <fstream> 
#include <string> 

int main() 
{ 
    char write_to_file; 
    std::cout << "Would you like to write to a file?" << std::endl; 
    std::cin >> write_to_file; 
    std::cin >> std::ws; 
    if (write_to_file == 'y' || write_to_file == 'Y') 
    { 
     std::string str; 
     std::cout << "What would you like to write." << std::endl; 

     std::getline(std::cin, str); 
     std::ofstream file; 
     file.open("Characters.txt"); 
     file << str.size() << " Characters." << std::endl; 
     file << std::endl; 
     file << str; 

     file.close(); 

     std::cout << "Done. \a" << std::endl; 
    } 
    else 
     std::cout << "K, Bye." << std::endl; 
} 
+3

중요한 부분은'cin >> y;'대신에'getline (std :: cin, y);'입니다. –

+0

참조 : http://www.cplusplus.com/reference/iostream/istream/getline/ – fretje

+1

또한 cin >> ws가 필요합니다. 그렇지 않으면 getline은 새로운 줄만 읽습니다. – hidayat

54

cin >> y;는 한 단어가 아닌 전체 라인에 읽는 코드를 돕는

감사합니다. 선을 얻으려면, 사용

string response; 
getline(cin, response); 

그런 다음 response 전체 라인의 내용을 포함합니다.

0
string str; 
getline(cin, str); 
cin >> ws; 

대신 단어 단어를 읽기의 전체 라인을 읽을 의 getline에게 기능을 사용할 수 있습니다. 그리고 cin >> ws은 공백을 건너 뛰는 곳입니다. 여기에 대한 자세한 내용은 여기를 참조하십시오. http://en.cppreference.com/w/cpp/io/manip/ws

+0

제안 해 주셔서 감사합니다. 답변을 수정했습니다. –

관련 문제