Ecriture ou copie de la sortie de la console Visual C ++ dans un fichier texte
Je suis en train de travailler avec Intel Perceptual Computing SDK Module de Reconnaissance Vocale. À l'aide de Microsoft Visual Studio 2012 Professional, le SDK de l'échantillon perçoit de la dictée, et après le traitement de la voix d'entrée imprime sur la fenêtre de la console. Tout ce que je veux faire est de copier la sortie imprimée sur la fenêtre de la console et de les écrire dans un .txt
fichier. Je suis à la suite de la voie générale, mais de toute façon le texte écrit dans le fichier est à seulement quelques numéros.
//Callback for recognized commands and alerts
class MyHandler: public PXCVoiceRecognition::Recognition::Handler, public PXCVoiceRecognition::Alert::Handler
{
public:
MyHandler(std::vector &commandes)
{ this->commandes=commandes; }
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();
}
}
source d'informationauteur Kandarp Joshi
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
>
de rediriger la sortie de la commande Visual Studio. Ajouter les arguments de la commande en sélectionnant votre projet dans l'explorateur de solutions, puis cliquez sur PROJET->Propriétés->Propriétés de Configuration->le Débogage. Ensuite, entrez> output.txt
dans les Arguments de la Commande. Après l'exécution de votre application, le fichier apparaîtra dans le Répertoire de Travail, qui par défaut est le même répertoire que votre .la sln fichiers.Je pense qu'il est tout simplement ce qui suggère à l'exécution de votre exécutable et de le diriger vers un fichier:
C:\.exe > C:\output.txt
Voici un lien sur la redirection.
En règle générale, si vous pouviez produire correctement dans la fenêtre de la console, ensuite il vous suffit d'exécuter le fichier exécutable avec un argument de ligne de commande comme
> c:\result.txt
pour rediriger la sortie standard vers un fichier (je suis en supposant que vous êtes sous Windows puisque vous avez le visual c++ tag), donc vous n'avez pas besoin de changer votre code à tout (tout ce que vous mettez àcout
sera écrit dans le fichier spécifié en argument). Si vous utilisez Visual Studio GUI, les arguments de ligne de commande peut être spécifié dans les propriétés du projet page, sinon vous pouvez simplement taper la commande dans une fenêtre de console à la main.