我的目标是进入' '
" "
,并'\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