我正在做一个通用的logging器类,我打印任何传递到一个文件。
Logger::Instance()->write('c'); Logger::Instance()->write("this"); Logger::Instance()->write(5);
char c = 't'; Logger::Instance()->write(c);
打印十进制而不是ascii:
116
string工作正常,但字符是唯一的问题。
端口Visual Studio C ++到Linux
创build一个Windows安装程序
将Perl正则expression式转换为等价的ECMAScript正则expression式
我的代码:
class Logger { public: static Logger* Instance(); bool open(string filename); template<typename T> void write(T data) { file << data; } bool close();
如果我做一个字符特定的打印function:
void write(char data) { file << data;
它会打印字符。 不知道这里发生了什么事。
编辑1:
只是一个总结..那么为什么这打印数字:
void write(T data) { file << data; }
而这个打印正确的ascii:
void writeChar(char data) { file << data; }
???
编辑2:
这是我的代码:
logger.h logger.cpp
使用这个类,只是去:
char c = 't'; Logger::Instance()->write(t); Logger::Instance()->writeChar(t);
编辑3:
[keyboardhook.cpp][3] [keyboardhook.h][4] [main.cpp][5] [3]: http://pastebin.com/VEav4kfn [4]: http://pastebin.com/yPwF17yg [5]: http://pastebin.com/JwHz2NBe
看看这里:
if(isdigit(c)) { Logger::Instance()->write((char) c); Logger::Instance()->writeChar(c); } else if(isalpha(c)) { if(!shift) Logger::Instance()->writeChar(tolower((char) c)); else Logger::Instance()->writeChar((char) c);
Stackoverflow不断将我的文字标记为“代码”,并保存时给我的问题..抱歉的等待。
LoadLibrary()的相对地址为dll
在Windows中build立Luabind
解决无法parsing的外部符号CSourceSeeking :: CSourceSeeking(…),尽pipe与正确的库链接
CMake发布步骤:根据visual studioconfiguration复制多个文件
Visual Studio中的“win32 project”名称与x86或x64平台的关系如何?
我试过以下,它在Visual C ++ 2010中正常工作(如我所料):
#include <iostream> struct Logger { template <typename T> void write(T data) { std::cout << data; } }; int main() { Logger *log = new Logger; char c = 't'; log->write(c); delete log; }
也许你有一些自定义的operator<<是为你造成这种行为吗? 你可以发布sscce吗?
编辑:
为了将来的参考,这里是什么将构成您的问题的SSCCE(根据您的完整的代码):
#include <iostream> struct Logger { template <typename T> void write(T data) { std::cout << data; } }; int main() { Logger *log = new Logger; char c = 't'; log->write(tolower(c)); delete log; }
关键问题是tolower的签名是int tolower(int c) ,也就是说,它返回一个整数,而不是一个字符。 因此, write<int>被调用,而不是write<char> 。
请记住sscce有多重要! 你的问题没有包含导致问题的非常重要的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。