[問題] 文件寫入問題

作者: akka5678   2015-12-21 19:56:04
我要寫入一個文件檔,鍵盤輸入 姓名 電話 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
.....
想了很久,不知道要怎麼修正,求解
作者: flydragon198 (Richard)   2015-12-21 20:11:00
(!strlen(str1) ==0) 這裡有問題
作者: akka5678   2015-12-21 20:18:00
因為我想用Enter結束,不就是str1字串長度==0時break嗎?
作者: flydragon198 (Richard)   2015-12-21 20:22:00
在cin後,會一直重複迴圈,沒有輸入就會一直重複
作者: akka5678   2015-12-21 20:28:00
對,但沒有輸入就按Enter不就是字串長度=0?怎麼沒中斷QQ例如我輸入了兩行資料第三行不輸入了,直接按Enter想離開
作者: stupid0319 (徵女友)   2015-12-21 20:31:00
if中再加一行ZeroMemory(str1,50);
作者: flydragon198 (Richard)   2015-12-21 20:32:00
cin如果直接按enter,不會把字串變成空的樣子你可以在while內第一行加上cout << "test";然後開啟程式直接按enter,會發現進不去while因為一直停留在前一行的cin另外你的if內也沒有改變str1的值,他就會變成在while內無窮迴圈,不會跳出
作者: LPH66 (-6.2598534e+18f)   2015-12-21 21:47:00
stringstream 可以解決你的問題

Links booklink

Contact Us: admin [ a t ] ucptt.com