从文件路径中删除空间(调试参数) 我写了一个C++程序,我可以从CMD中的调试参数开始。例如:

从文件路径中删除空间(调试参数) 我写了一个C++程序,我可以从CMD中的调试参数开始。例如:,c++,C++,example.exe文件pathoftxtfile 程序将打开并读取txt文件。这一切都可以正常工作,但如果txt文件位于包含空格的路径中,例如C:/Users/Jhon/test 4/space 4 由于空格键,程序将其检测为多个参数。是否有任何方法可以在调试参数中插入参数并忽略单个参数的空格? 另一件事是,我必须将文件路径的\更改为/程序实际找到它。有什么办法可以改变吗?两件事: 关于空格:只需将路径放在双引号之间 关于斜线:通常使用反斜线而不是斜线来指示路径 因此,您可以执行以下操作

example.exe文件pathoftxtfile

程序将打开并读取txt文件。这一切都可以正常工作,但如果txt文件位于包含空格的路径中,例如C:/Users/Jhon/test 4/space 4 由于空格键,程序将其检测为多个参数。是否有任何方法可以在调试参数中插入参数并忽略单个参数的空格? 另一件事是,我必须将文件路径的\更改为/程序实际找到它。有什么办法可以改变吗?

两件事:

  • 关于空格:只需将路径放在双引号之间
  • 关于斜线:通常使用反斜线而不是斜线来指示路径
因此,您可以执行以下操作:

example.exe "C:\Users\Jhon\test 4\space 4"

操作系统特定的MS窗口-
example.exe“txt文件的文件路径”
我认为您不希望忽略空格。您要引用路径。忽略空格将导致找不到文件夹。命令行上空格的处理也由shell或命令行itsef处理。另一件事是,我必须将文件路径的\更改为/程序实际找到它。我不知道那是什么意思。在windows上使用\完全可以。您将需要转义\如果这是代码中硬编码的字符串文本路径,或者使用原始字符串文本,但是您永远不需要使用/Thankss,但是是否有任何方法可以在不带引号的路径中键入,并且仍然可以使用空格?例如,我可以在调试参数中添加“filepath”吗?因为我希望用户只键入example.exe filepath,而不是example.exe“filepath”,当然,我知道我应该使用\但如果我将它们放入程序中,它将找不到文件。对不起,我是beginner@Cranberryjuicer21当前位置不,我认为这是不可能的,因此我建议使用双引号。顺便问一下,这怎么可能?试想一下,你键入了
example.exe A B
example.exe
怎么知道
A
B
是不同的参数,或者两者都属于同一个目录?这是不可能的。如果您不想引用,您可以更改路径并重命名文件夹,使其中没有空格。是的,确实如此。也许那是不可能的。但是你知道如何解决这个问题吗?因为我使用fstream并使用argv[]。所以我使用了fstream myfile(argv[])。当然,我使用了一个参数,在这个参数中,用户编写了文件路径,这就是问题所在。如果它使用C:\Users\Jhon\test 4\space 4,它将找不到路径,但是如果它使用C:/Users/Jhon/test 4/space 4,它会找到路径。在mac电脑上,您可以转义空格,但引号更通用,可读性更强。