将可视C++控制台输出写入或复制到文本文件
Writing or Copying Visual C++ console output to text file
我正在使用英特尔感知计算 SDK 语音识别模块。使用 Microsoft Visual Studio 2012 专业版,SDK 示例感知听写,并在处理语音输入后将其打印到控制台窗口。我想做的只是复制控制台窗口上打印的输出并将其写入.txt
文件中。我遵循一般方式,但不知何故,文件中写的文本只是一些数字。
// Callback for recognized commands and alerts
class MyHandler: public PXCVoiceRecognition::Recognition::Handler, public PXCVoiceRecognition::Alert::Handler
{ 公共: MyHandler(std::vector &command) { this->command=command; }
virtual void PXCAPI OnRecognized(PXCVoiceRecognition::Recognition *cmd)
{
wprintf_s(L"nRecognized: <%s>n", (cmd->label>=0)?commands[cmd->label]:cmd- >dictation); //this line prints the dictated statement//
// writing to a text file
printf("Writing to the txt file...");
std::ofstream out("c:\MyVoice.txt");
out<<cmd->dictation;
}
protected:
std::vector<pxcCHAR*> commands;
};
int wmain(int argc, wchar_t* argv[]) {
// Create session
PXCSmartPtr<PXCSession> session;
pxcStatus sts = PXCSession_Create(&session);
if (sts < PXC_STATUS_NO_ERROR) {
wprintf_s(L"Failed to create the PXCSessionn");
return 3;
}
// Parse command line
UtilCmdLine cmdl(session);
if (!cmdl.Parse(L"-file-iuid-grammar-sdname-realtime-eos",argc, argv)) return 1;
// Create PXCVoiceRecognition instance
PXCSmartPtr<PXCVoiceRecognition> vc;
sts=session->CreateImpl(cmdl.m_iuid, PXCVoiceRecognition::CUID, (void **)&vc);
if (sts<PXC_STATUS_NO_ERROR)
{
wprintf_s(L"Failed to create PXCVoiceRecognitionn");
return 3;
}
// Find and initilize capture module
UtilCaptureFile capture(session,cmdl.m_recordedFile,false);
if (cmdl.m_sdname) capture.SetFilter(cmdl.m_sdname);
// Query PXCVoiceRecognition profile
PXCVoiceRecognition::ProfileInfo profile;
for (int i=0;;i++)
{
sts=vc->QueryProfile(i, &profile);
sts=capture.LocateStreams(&profile.inputs);
return 3;
}
if (cmdl.m_realtime >= 0) capture.SetRealtime(cmdl.m_realtime);
// Set PXCVoiceRecognition profile
if (cmdl.m_eos) profile.endOfSentence = cmdl.m_eos;
sts=vc->SetProfile(&profile);
// Grammar intialization
pxcUID grammar = 0;
if (cmdl.m_grammar.size()<0)
{
wprintf_s(L"Dictation Moden");
}
vc->SetGrammar(grammar);
// SubscribeRecognition
MyHandler handler(cmdl.m_grammar);
vc->SubscribeRecognition(80, &handler);
vc->SubscribeAlert(&handler);
// Processing loop
PXCSmartPtr<PXCAudio> audio;
PXCSmartSPArray sps(3);
wprintf_s(L"Press any key to exitn");
while (!_kbhit())
{
sts = capture.ReadStreamAsync(audio.ReleaseRef(),sps.ReleaseRef(0));
sts=vc->ProcessAudioAsync(audio,sps.ReleaseRef(1));
sps.SynchronizeEx();
}
}
可以使用
>
重定向Visual Studio运行的命令的输出。 通过在解决方案资源管理器中选择项目并单击"项目->属性->配置属性"->调试,将其添加到命令参数中。 然后在命令参数中输入> output.txt
。 运行应用程序后,该文件将显示在工作目录中 - 默认情况下,该目录与.sln文件相同。
我认为他只是建议运行可执行文件并将其定向到文件:
C:\.exe> C:\输出.txt
这是有关重定向的链接。
一般来说,如果您可以在控制台窗口中正确生成输出,那么您可以使用命令行参数(如 > c:result.txt
)运行可执行文件,将标准输出重定向到文件(我假设您在 Windows 上,因为您有 visual-c++ 标签),因此您根本不需要更改代码(您放入cout
的所有内容都将写入参数中指定的文件)。 如果使用 Visual Studio GUI,则可以在项目的属性页中指定命令行参数,否则只需在控制台窗口中手动键入命令即可。
相关文章:
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 无法将整个文本文件复制到字符数组
- 将文本从一个文件复制到另一个c++流时出错
- 如何将控制台输出中的所有内容复制到文本文件?
- C++ 复制字符串文本(来自 C)
- 文本文件中的 grep 字符串,并将它们复制到 CMake 中的目录中
- C++可以从文本文件复制并粘贴到打开的Word程序中
- 如何将percision格式复制到文本文件
- 从文本内容复制图片 (.tga)
- 如何将足够的数据从文本文件分配到char*中,然后将其复制到内存C 中
- QStyledItemDelegate 和 QStandardItem 阻止更改文本,仅启用选择和复制
- 将可视C++控制台输出写入或复制到文本文件
- 我试图运行将文本从一个文件复制到另一个文件的程序
- 从输入复制到输出文本文件
- 如何将文本从一个文件复制到另一个文件,然后将文本字符串的第一个字母转换为大写
- C++使用迭代器复制文本文件
- 将文本复制到 MFC 中的剪贴板
- C++在 ActiveDirectory 和 Sqlite3 之间复制文本数据时出现问题
- 从.复制文本.从char* var到char* var2的文本
- c++复制文本文件程序使用头文件