[問題] string和c_str()的奇怪輸出
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC 5.4
問題(Question):
昨天碰到的奇妙問題:
#include<iostream>
#include<string>
using namespace std;
int main() {
//string str("aaa");
const char* x = string("111").c_str();
const char* y = string("222").c_str();
cout << x << "\n"; // 222(第一行不註解的話會是111)
cout << y << "\n"; // 222
}
上面程式碼x和y的輸出都是222
是因為等號右邊都是string物件的rvalue 所以第二個就直接覆蓋掉第一個嗎?
但如果按照這樣解釋 為什麼前面隨便加個其他的string(第一行不註解的話)
x的輸出結果就變正常的111了?
目前搜了一下沒找到答案
感謝解答
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.51
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1536910208.A.2E4.html
→
09/14 15:35,
7年前
, 1F
09/14 15:35, 1F
→
09/14 15:36,
7年前
, 2F
09/14 15:36, 2F
→
09/14 15:36,
7年前
, 3F
09/14 15:36, 3F
→
09/14 15:49,
7年前
, 4F
09/14 15:49, 4F
推
09/14 16:15,
7年前
, 5F
09/14 16:15, 5F
→
09/14 16:31,
7年前
, 6F
09/14 16:31, 6F
噓
09/14 17:33,
7年前
, 7F
09/14 17:33, 7F
→
09/14 17:36,
7年前
, 8F
09/14 17:36, 8F
推
09/14 19:28,
7年前
, 9F
09/14 19:28, 9F
→
09/14 20:29,
7年前
, 10F
09/14 20:29, 10F
推
09/15 06:16,
7年前
, 11F
09/15 06:16, 11F
→
09/15 06:16,
7年前
, 12F
09/15 06:16, 12F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章