我的目标是转换' '
成" "
, 并'\n'
转换成"\n"
下面的代码适用于一般情况,但不适用于空格和'\n'
. 因为>>
and<<
运算符不接受' '
and '\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 仍然返回为“”。