อินพุตโปรแกรมของฉันจะไม่บันทึกลงในไฟล์ข้อความ

สวัสดีทุกคน ที่ฉันเขียนโค้ดด้านล่างนี้ มันเป็นของโปรเจ็กต์ไดอารี่ มันยังอยู่ในช่วงเริ่มต้น ดังนั้นเมื่อคุณเรียกใช้ มันจะสมมุติว่าจะบอกให้คุณป้อนรายการไดอารี่แล้วบันทึกเป็นข้อความ แต่ไม่ได้บันทึกไว้ใน ไฟล์โปรดช่วยด้วย!!

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

int main()

{
 ofstream wysla;
wysla.open("wysla.txt, ios::app");
int kaput;
string s1,s2;
cout<<"Please select from the List below"<<endl;
cout<<"1.New entry"<<endl;
cout<<"2.View Previous Entries"<<endl;
cout<<"3.Delete an entry"<<endl;
cin>>kaput;
switch (kaput)
{
case 1:

    cout<<"Dear diary,"<<endl;
    cin>>s1;
    wysla<<s1;
    wysla.close();

    break;
}
return 0;
}

person Wysla    schedule 22.04.2013    source แหล่งที่มา


คำตอบ (2)


ฉันคิดว่าคุณพิมพ์ผิดที่นี่

wysla.open("wysla.txt", ios::app);
person Daniel A. White    schedule 22.04.2013
comment
ในโปรแกรมเดียวกันเมื่อฉันป้อนสตริงยาว มันจะเลือกเฉพาะคำแรก .. เมื่อฉันลองใช้ getline สตริงไม่ได้รับการบันทึกในไฟล์ข้อความ ฉันควรทำอย่างไร? - person Wysla; 26.04.2013

นอกจากคำตอบของ Daniel A. White แล้ว คุณยังอาจประสบปัญหาอีก นั่นคือมีเพียงคำเดียวเท่านั้นที่ถูกบันทึกไว้ในไฟล์ของคุณ สิ่งนี้เกิดจากบรรทัดนี้:

cin>>s1;

คุณควรใช้

getline(cin, s1);

ที่นี่.

person CyDek    schedule 22.04.2013
comment
a ทำอย่างนั้น แต่ตอนนี้มันช่วยไม่ได้แม้แต่คำเดียว!! อะไรจะเป็นทางออก - person Wysla; 26.04.2013
comment
สาเหตุที่เป็นไปได้มากที่สุดคือการที่ cin››kaput ทิ้งอักขระ '\n' ไว้ข้างหลังในบัฟเฟอร์อินพุต สิ่งนี้จะนำไปสู่การ getline(cin, s1) ส่งคืนสตริงว่าง (เนื่องจากจะอ่านเฉพาะ '\n' ถัดไปเท่านั้น) ดูลิงก์เกี่ยวกับวิธีล้างบัฟเฟอร์อินพุต - person CyDek; 28.04.2013