Estou tendo problemas com argumentos em programas de console C++ criados no C++Builder 12 Community Edition.
Se o executável estiver em uma pasta com espaços no nome, por exemplo, "test dir"
, e eu o invoco de uma sessão de console em uma pasta DIFERENTE, então os argumentos extraídos pelo meu código estão incorretos. Se o caminho do arquivo executável não tiver espaços, tudo funciona bem. Se eu executá-lo dentro do IDE, também está OK. O código criado no Visual Studio 22 também funciona OK.
CPPtest.cpp
#include <iostream.h>
int main(int argc, char* argv[])
{
cout << "argc: " << argc << "\n";
cout << "argv0: " << argv[0] << "\n";
cout << "argv1: " << argv[1] ;
return 0 ;`
}
O executável está localizado em um diretório chamado "Misc projects"
, CWD é "C:\Junk"
:
C:\Junk>C:\"Misc projects"\CPPtest 3 8
argc: 2 ## INCORRECT: Should be 3
argv0: c:\Misc projects\CPPtest.exe
argv1: projects\CPPtest 3 8 # INCORRECT should be 8
Código idêntico quando executado dentro do Visual Studio 22 funciona corretamente.