2011-03-28 12 views
14

İşte şu anki C++ kodum. 'un kod satırını nasıl yazdığını bilmek isterim. cin.getline(y) veya başka bir şey kullanabilir miyim? Kontrol ettim ama hiçbir şey bulamadım. Çalıştırdığımda, yalnızca çıktı almak için ihtiyacım olan tam satırlar yerine sadece tek kelimesi dışında mükemmel çalışır. Bu yardıma ihtiyacım olan şey. Kodda bunu açıkladım.Kullanıcı, cin kullanarak tam bir çizgi nasıl okunur?

#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

Başlığınızı daha iyi bir şekilde sorunuzu yansıtmak isteyebilirsiniz. Ayrıca, sorunuza açıklık getirmelisiniz, ne sorduğunuzu açık bir şekilde ifade etmiyorsunuz. –

+0

K bitti, Teşekkürler :) – FuzionSki

+2

Sorun şu ki; cin >> y' sadece kullanıcı türünün ilk kelimesini saklıyor, asker bütün satırın nasıl saklanacağını bilmek istiyor, öyle ki

cevap

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

Önemli olan: 'getline (std :: cin, y);' yerine 'cin >> y;'. –

+0

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

+1

ayrıca, ayrıca >> ws; başka bir deyişle, getline yalnızca yeni bir satır okuyacaktır – hidayat

54

cin >> y; tek kelimeyle değil, bütün çizgi içinde okur kod yardımcı olmak için

teşekkürler. Bir hat almak için, kullanın:

string response; 
getline(cin, response); 

Sonra response çizginin tamamının içeriğini içerecektir.

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

yerine kelime kelime okuma bütün çizgi okumak için getLine işlevini kullanabilirsiniz. Ve cin >> ws beyaz boşlukları atlamak için var. Ve bu konuda bazı detaylar bulacaksınız: http://en.cppreference.com/w/cpp/io/manip/ws

+0

Öneri için çok teşekkür ederim, cevabı düzenledim. –

İlgili konular