[英]Copying (not redirecting) Visual C++ console output to text file while still viewing the output in console window
[英]Writing or Copying Visual C++ console output to text file
我正在使用英特爾感知計算SDK語音識別模塊。 使用Microsoft Visual Studio 2012 Professional,SDK示例會感知聽寫,處理完語音輸入后會在控制台窗口中打印出來。 我想要做的就是復制打印在控制台窗口上的輸出並將其寫入.txt
文件。 我遵循一般的方式,但不知何故文件中寫的文字只是一些數字。
// Callback for recognized commands and alerts
class MyHandler: public PXCVoiceRecognition::Recognition::Handler, public PXCVoiceRecognition::Alert::Handler
{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,將其添加到命令參數。 然后在命令參數中輸入> output.txt
。 運行應用程序后,該文件將顯示在工作目錄中 - 默認情況下,該目錄與.sln文件的目錄相同。
我認為他只是建議運行您的可執行文件並將其指向文件:
C:\\。exe> C:\\ output.txt
這是一個關於重定向的鏈接。
一般來說,如果您可以在控制台窗口中正確生成輸出,那么您可以使用命令行參數運行可執行文件,例如> c:\\result.txt
將標准輸出重定向到文件(我假設您是在Windows上,因為你有visual-c ++標簽),因此你根本不需要改變你的代碼(你輸入cout
所有內容都將被寫入參數中指定的文件)。 如果您使用的是Visual Studio GUI,則可以在項目的屬性頁面中指定命令行參數,否則您只需手動在控制台窗口中鍵入命令即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.