ಠ_ಠ
@anonymous
偷偷說
Sun, Nov 6, 2022 4:52 AM
Sun, Nov 6, 2022 6:32 AM
3
【詢問】
想請問幾個關於struct與string的問題
ಠ_ಠ
Sun, Nov 6, 2022 4:53 AM
想請問輸入多行會員資料(每行有會員名字、生日、電話號碼)應該要怎麼處理才好?(尤其是逗號、斜線與連結號的部分)
ಠ_ಠ
Sun, Nov 6, 2022 4:55 AM
我目前輸入的部分寫成這樣
想用for迴圈重複輸入(直到n)好像會怪怪的
但用while(cin>>)也沒辦法成功,想請問是哪裡的思路有問題嗎?
ಠ_ಠ
Sun, Nov 6, 2022 4:55 AM
輸入與struct格式
yam8896
Sun, Nov 6, 2022 4:57 AM
string input;
char c;
while(cin<<c){
if(c!=‘,’) input+=c;}
yam8896
Sun, Nov 6, 2022 4:58 AM
這樣就可以用逗號分開資料了
ಠ_ಠ
Sun, Nov 6, 2022 5:00 AM
yam8896
: 謝謝旅人!我去寫寫看
還想請問若要重複輸入n行,該怎麼做比較好呢?
yam8896
Sun, Nov 6, 2022 5:05 AM
重複輸入的話用while(cin)就可以了,只是這只是幫你把輸入用逗號分開,然後拿到的資料再看你要怎麼分
yam8896
Sun, Nov 6, 2022 5:06 AM
Sun, Nov 6, 2022 5:06 AM
然後這樣的輸入方式
要結束輸入的話要用ctrl+z+enter來結束
ಠ_ಠ
Sun, Nov 6, 2022 5:07 AM
yam8896: 好><非常感謝yam旅人,我來去研究看看!
ಠ_ಠ
Sun, Nov 6, 2022 5:08 AM
yam8896: 因為他有多筆資料(我是透過Struct存)
但這樣我把資料一個一個分開後好像就不太適合用input+=c了QQ
yam8896
Sun, Nov 6, 2022 5:18 AM
C是 char 不能用上面type.name這樣寫
你這樣寫只能適用於string且用空格分開的資料,這樣的話名字的姓和名會被分成兩個資料
yam8896
Sun, Nov 6, 2022 5:23 AM
Sun, Nov 6, 2022 5:23 AM
string input;
char c;
while(cin<<c){
if(c!=‘,’) input+=c;
else{ //當輸入的字元是逗號,把當前的string存成想要的資料
// 用count 當作資料的編號 1 是名字 2是日期等等的
// 我沒寫完不要照抄會error
if(count=1) member. name=input;
}
}
ಠ_ಠ
Sun, Nov 6, 2022 5:28 AM
yam8896: 像是用空格來判斷count嗎?
我剛剛有看到有人說可以試試看
cin.getline()讀整行
再用strtok()來分割substring,再分配到struct裡,但好像真的會影響到名字等等(因為這題之後還要判斷姓氏字母順序、生日有沒有達到年齡、電話前四碼是否吻合><)
ಠ_ಠ
Sun, Nov 6, 2022 5:28 AM
yam8896: !是不是將資料編號後再放進struct裡會比較好
yam8896
Sun, Nov 6, 2022 5:29 AM
通常大部分都是用空格或換行當資料的分隔
yam8896
Sun, Nov 6, 2022 5:31 AM
Sun, Nov 6, 2022 5:32 AM
因為我懶得去查函示,所以直接簡單的粗暴用一個int count記你現在輸入到哪了
如果等於一的話現在把string input存struct member的名字
等於二的話string input存成struct member的電話
以此類推
ಠ_ಠ
Sun, Nov 6, 2022 5:33 AM
yam8896: 我好像有感覺了!我來去寫寫QQ
yam8896
Sun, Nov 6, 2022 5:33 AM
getline好像會存成string吧
我用的是讀取每一個字元char再把每一個char組成string
yam8896
Sun, Nov 6, 2022 5:47 AM
啊char變string那邊應該要查一下有什麼函式可以直接套
ಠ_ಠ
Sun, Nov 6, 2022 5:48 AM
yam8896:
好的!!真的非常感激旅人><
不好意思占用您的時間
我繼續想一下要怎麼寫 作業真的難到哭
載入新的回覆
想請問幾個關於struct與string的問題
我目前輸入的部分寫成這樣
想用for迴圈重複輸入(直到n)好像會怪怪的
但用while(cin>>)也沒辦法成功,想請問是哪裡的思路有問題嗎?
char c;
while(cin<<c){
if(c!=‘,’) input+=c;}
還想請問若要重複輸入n行,該怎麼做比較好呢?
要結束輸入的話要用ctrl+z+enter來結束
但這樣我把資料一個一個分開後好像就不太適合用input+=c了QQ
你這樣寫只能適用於string且用空格分開的資料,這樣的話名字的姓和名會被分成兩個資料
char c;
while(cin<<c){
if(c!=‘,’) input+=c;
else{ //當輸入的字元是逗號,把當前的string存成想要的資料
// 用count 當作資料的編號 1 是名字 2是日期等等的
// 我沒寫完不要照抄會error
if(count=1) member. name=input;
}
}
我剛剛有看到有人說可以試試看
cin.getline()讀整行
再用strtok()來分割substring,再分配到struct裡,但好像真的會影響到名字等等(因為這題之後還要判斷姓氏字母順序、生日有沒有達到年齡、電話前四碼是否吻合><)
如果等於一的話現在把string input存struct member的名字
等於二的話string input存成struct member的電話
以此類推
我用的是讀取每一個字元char再把每一個char組成string
好的!!真的非常感激旅人><
不好意思占用您的時間
我繼續想一下要怎麼寫 作業真的難到哭