我要寫入一個文件檔,鍵盤輸入 姓名 電話 Email
如下:
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
ofstream myFile;
int n = 0;
char str1[50];
char str2[50];
myFile.open("Ex15_1.dat",ios::out)
cout << "請輸入姓名、電話、Email地址" << endl;
while(1)
{
cin >> str1 >> n >> str2;
if (!strlen(str1) ==0) //若字串長度不等於0
{
myFile << str1 << '\t' << n << '\t' << str2 << endl;
}
else
break;
}
myFile.close();
return 0;
}
結果按Enter不會中斷這個迴圈而且會一直複製
例如 我輸入 police 110 gmail
hospital 119 hotmail
文件檔會是最後一行輸入的一直複製
police 110 gmail
hospital 119 hotmail
hospital 119 hotmail
hospital 119 hotmail
hospital 119 hotmail
hospital 119 hotmail
hospital 119 hotmail
hospital 119 hotmail
hospital 119 hotmail
.....
想了很久,不知道要怎麼修正,求解
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.180.106.216
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1450698967.A.76D.html
推
12/21 20:11, , 1F
12/21 20:11, 1F
→
12/21 20:18, , 2F
12/21 20:18, 2F
推
12/21 20:22, , 3F
12/21 20:22, 3F
→
12/21 20:28, , 4F
12/21 20:28, 4F
→
12/21 20:29, , 5F
12/21 20:29, 5F
推
12/21 20:31, , 6F
12/21 20:31, 6F
推
12/21 20:32, , 7F
12/21 20:32, 7F
→
12/21 20:32, , 8F
12/21 20:32, 8F
→
12/21 20:33, , 9F
12/21 20:33, 9F
→
12/21 20:33, , 10F
12/21 20:33, 10F
→
12/21 20:34, , 11F
12/21 20:34, 11F
→
12/21 20:35, , 12F
12/21 20:35, 12F
是的謝謝!!所以有方法可解嗎?
我試過用getline
cin.getline(str1,80);
cin.getline(str2,80);
這樣就可以用Enter讀取空字串,但是輸入就只能以換行來存入str1和str2了..
police
gmail
hospital
hotmail
這樣....
如果再getline(str1,80,' '); //這樣就不能以Enter來中斷..
而且中間又必須輸入電話 int n
這樣不知道怎麼加..因為這只能用 cin >> n
這樣下一行的getline(str2,80); 就會抓到空白(因為抓完n後就回停留在換行符號前)
※ 編輯: akka5678 (175.180.106.216), 12/21/2015 21:31:32
推
12/21 21:47, , 13F
12/21 21:47, 13F