[爆卦]Scanf %s是什麼?優點缺點精華區懶人包

為什麼這篇Scanf %s鄉民發文收入到精華區:因為在Scanf %s這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者YCK (Y.C.K)看板C_and_CPP標題[問題] 可以用scanf存C++ String...


Q1: (已解決..就是此題不能這樣搞XD)

想請問我用了C++ String宣告變數之後

能否用C的Scanf把資料輸入該變數

然後用printf輸出?

像是:

string text;
scanf("%s",&text);
printf("%s\n",text);
-------------------------------------------------

Q2:

我現在用了C++ STL中的map開了一個Table

map<string,string> Table;

Table["Test"]="12345";

然後有一個char*變數為temp,其內容為"Test"

我可以用這個temp去作Table的index嗎?

像是cout<<Table[temp] <<endl;

然後顯示出"12345"

可以這樣搞嗎? 不行的話能不能作什麼修正去實行這個作法?

--
諸葛亮 :「魯肅,近來可好?」
魯肅 :「安然無恙。」
諸葛亮 :「魯夫人呢?」
魯肅 :「他應該在偉大的航道上。 」

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.233.40.239
nowar100:怎麼會想拿C的函式去套C++的物件呢 XD 03/30 00:28
nowar100:忘了補結論 @@" 我認為不行 03/30 00:29
YCK:嗯..因為作業上的需要..所以想試試看能不能這樣搞Orz... 03/30 00:29
※ 編輯: YCK 來自: 118.233.40.239 (03/30 00:32)
holymars:1.可以printf不能scanf std::string只有c_str()讓你拿 03/30 00:40
holymars:const char* 除非你要自己用const_cast硬轉 但是這樣不 03/30 00:40
holymars:能保證會發生什麼事 03/30 00:40
holymars:2.可以 因為string有string(const char*) constructor 03/30 00:41
holymars:這種問題查一下reference就有答案了吧..STL的reference 03/30 00:43
holymars:應該隨便google都有:P 03/30 00:43
YCK:我有看cppreference跟cPlusPlus...看了還是不大會用 03/30 00:45
YCK:對C++實在很不熟..|| 03/30 00:45

關於Q2:

char code[7],op[3];
while(scanf("%s",code)!=EOF){
code[6]='\0', op[2]='\0';
printf("Input Code:%s\n",code);
strncpy(op,code,2);
cout<<op<<endl;
printf("OP-code:%s, mnemonic:%s\n",op,Table[op]);
}

其中op[3]是在while中才被指定內容.

執行到cout<<op<<endl;這邊都ok

但是最後一行printf就會掛掉..如果把Table[op]拿掉就正常...

所以..不能這樣用嗎?
※ 編輯: YCK 來自: 118.233.40.239 (03/30 00:52)
※ 編輯: YCK 來自: 118.233.40.239 (03/30 00:53)
nowar100:Table[op].c_str() ? 03/30 00:58
YCK:Orz...我一定要找個時間把C++重學一次..... 03/30 01:03
YCK:感謝holymars以及nowar100!!! 03/30 01:03
nowar100:其實你查ref的時候可以注意一下型態 像是%s要char*字串 03/30 01:35
nowar100:可是你卻給他string 當然吃不下去 03/30 01:35

你可能也想看看

搜尋相關網站