Re: [問題]如何把char轉成int
※ 引述《adxis (acer)》之銘言:
: #include <string>
: #include <sstream>
: #include <iostream>
: int main()
: {
: using namespace std;
: char input[10]; // using std::string is recommanded
: int output;
: input[9] = 0;
: cin.read(input, 9);
: stringstream convert;
: convert<<string(input);
: // 注意這個 string 建構式會用 '\0'來找結尾
: // 如果 input[9] 不一定是 '\0'
: // 就要用別的建構式
: convert>>output;
: // 如果要繼續使用 convert 要記得呼叫 convert.clear()
最近發現這邊有錯誤
iostream 的 clear() 只是清除 error flag (比如 fail 跟 bad)
並不會把 stream buffer 裡面的東西清掉,而把buffer reset的動作在 basic_ios
這個被所有 iostream 繼承的基底型別中並不存在,也許是因為 stream buffer 行為
差異較大,被封裝成 streambuf 的關係。目前我看到的是 stringstream
有實作一個 str() 函數,可以透過他直接設定新的 stream buffer (呼叫底層
streambuf 的函數),其他 stream 只能設定新的 rdbuf 給 stream ,也就是說
建立新的 streambuf 物件是外部的任務。
總結,對於 stringstream 而言,重設的動作如下
stringstream convert;
convert.str("");
修正一下以免誤導視聽 0rz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.127.20.25
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章