我有一个 C# 应用程序,它将 C++ 可执行文件(由 Visual Studio 创建)作为单独的进程运行。我遇到了一些涉及 noskipws 操纵器的奇怪行为,我意识到这在以下 C++ 代码片段中完全没有用。ifStm 是以二进制模式打开的 ifstream 对象,ofStm 是以二进制追加模式打开的 ofstream 对象。
ifStm >> noskipws;
for (int ch; (ch = ifStm.get()) != EOF;)
ofStm.put((char)ch);
循环的目的是将输入文件中的每个字符附加到输出文件中,并且在直接运行或从 C# 应用程序运行而不使用 noskipws 语句时,它可以完美运行。但是,当使用 noskipws 语句从 C# 应用程序运行时,输出文件最终会随机丢失字符或到处都是垃圾。看来 noskipws 实际上会对非格式化输入函数的性能产生负面影响,我想知道是否有人知道原因。
谢谢 :-)