我的目標是進入' '
" "
,並'\n'
轉化爲"\n"
轉換一個char「」或換行符爲一個字符串
下面的代碼適用於一般的情況,但不帶空格和'\n'
。由於>>
和<<
運營商不採取' '
和'\n'
s。
std::string stringFromChar(char a) {
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
std::string s;
ss << a;
ss >> s;
return s;
}
我想通過使用std::stringstream::binary
,它使用二進制數來讀寫。因此,保留角色,而不會丟失空格或換行符。
我發現雖然a
是' '
,s
原來是""
。
我知道一種方法來解決這個問題:
std::string stringFromChar(char a) {
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
std::string s;
ss << a;
s = ss.str();
return s;
}
這是真的,它並沒有帶走你的空間或換行一邊讀書,但他們得到在寫刪除?爲什麼不使用stringstream工作的二進制文件?
而且,我試圖使用SS >>的std :: noskipws >> S爲:
std::string stringFromChar(char a) {
std::stringstream ss(std::stringstream::in | std::stringstream::out | std::stringstream::binary);
std::string s;
ss << a;
ss >> std::noskipws >> s;
return s;
}
它也沒有工作。爲什麼? s仍然返回爲「」。
這些都是有效的。但我的問題沒有回答。 :(但是,非常感謝:) D – monkeyMoo 2012-08-13 04:07:35
@YatingSheng我認爲問題在於,當你使用'>>'操作符來讀取一個字符串時,字符串的末尾總是被認爲是由空白限定的,所以無論'skipws'標誌被設置,你將得到一個空字符串,因爲讀取操作沒有找到一個字符串,如果你使用'str()'成員來訪問內部字符串(就像你在處理字符串流時應該做的那樣) ),你應該沒有這樣的問題。 – paddy 2012-08-13 04:13:42
啊!得到它!!:D解決!謝謝!! – monkeyMoo 2012-08-13 05:27:02