将Visual C ++控制台输出写入或复制到文本文件 [英] Writing or Copying Visual C++ console output to text file
问题描述
我正在使用英特尔感知计算SDK语音识别模块。使用Microsoft Visual Studio 2012 Professional,SDK示例感知听写,处理后语音输入将其打印在控制台窗口上。我想要做的就是复制打印在控制台窗口上的输出并将其写入 .txt
文件中。我遵循一般方式,但不知何故文件中写的文本只是一些数字。
I am working with Intel Perceptual Computing SDK Voice Recognition Module. Using Microsoft Visual Studio 2012 Professional, the SDK sample perceives the dictation and after processing the voice input prints it on the console window. All i want to do is to copy the output printed on console window and write it in a .txt
file. I am following the general way but somehow the text written in file is just some numbers.
// Callback for recognized commands and alerts
class MyHandler: public PXCVoiceRecognition::Recognition::Handler, public PXCVoiceRecognition::Alert::Handler
{
public:
MyHandler(std :: vector& commands)
{this-> commands = commands; }
{ public: MyHandler(std::vector &commands) { this->commands=commands; }
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 PXCSession\n");
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 PXCVoiceRecognition\n");
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 Mode\n");
}
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 exit\n");
while (!_kbhit())
{
sts = capture.ReadStreamAsync(audio.ReleaseRef(),sps.ReleaseRef(0));
sts=vc->ProcessAudioAsync(audio,sps.ReleaseRef(1));
sps.SynchronizeEx();
}
}
推荐答案
您可以使用>
重定向Visual Studio运行的命令的输出。通过在解决方案资源管理器中选择项目并单击PROJECT-> Properties-> Configuration Properties-> Debugging,将其添加到命令参数中。然后输入>输出.txt
进入命令参数。运行应用程序后,该文件将显示在工作目录中 - 默认情况下与.sln文件的目录相同。
You can use >
to redirect the output of the command run by Visual Studio. Add it to the command arguments by selecting your project in the solution explorer and clicking PROJECT->Properties->Configuration Properties->Debugging. Then enter > output.txt
into the Command Arguments. After you run your application, the file will appear in the Working Directory - which by default is the same directory as your .sln files.
这篇关于将Visual C ++控制台输出写入或复制到文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!