有关空格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关空格相关的知识,希望对你有一定的参考价值。

(之后再复制图片过来吧)

 

有关“空格”引发的错误

 

首先我必须承认,空格问题我表述得不够清楚。它仅仅是在我编程过程中遇到的小bug。完全可以避免。

目前来看,是因为在“cmd”中输入空格,会让其自动判断为“分开”导致的错误。

如下展示我遇到的问题以及我自己理解得到的原因。

 

第一步,在测试功能过程中,我注释掉了所有与改功能无关的代码。仅保留如下功能的代码:

读取命令行输入

 

 

int _tmain(int argc, _TCHAR* argv[])

//int main(int argc, char **argv)本程序使用的是:_tmain(),造成了很多不必要的麻烦,具体为什么选用,是因为程序原本就给了这个,如果修改成main()则出现了各种不认识的错误。

{

      

       list<Word> lWord;//这个list用作存储单词

       string fileName;//文件名字

       wstring w_fileName;

       string filePath;//文件路径(文件夹路径)

       wstring w_filePath;

       string argv_1;//读入的字符串,第二个字符串,用于接受“-s”字符串,用于之后的比较

       wstring w_argv_1;

       cout << "argc = " << argc;//用于查看输入参数的个数。

 

       w_fileName = argv[2];

       fileName = WStringToString(w_fileName);

       OpenFile(fileName, lWord);

       Display_for_softwareclass(lWord);

}

 

第二步,在【项目-wf属性-配置属性-调试-命令参数】中设置预计输入的命令参数。

我设置的参数为

【-s C:\Users\_Rio56\Documents\Visual Studio 2013\Projects\wf\Debug\test.txt】

 

 

 

在我眼中,参数包涵2个内容,第一个是:“-s”,

第二个是文件路径:

“C:\Users\_Rio56\Documents\Visual Studio 2013\Projects\wf\Debug\test.txt”。

 

然而程序没有像我预期的那样打开对应的文件夹中的文件。而是报错了!

(同时我也发现,argc不是我预期的3,而是5.这就说明,命令行认为我输入的是5个参数而不是3个参数)

 

 

错误是这样的:

 

单击中止后,程序退出,也没有其他情况说明。于是我加入断点进行调试。

 

 

在这个地方我可以清楚的看到,我期待的“文件路径+文件”被切断了,只识别了前半部分。

点击继续运行

运行到这里依旧没有出错。再次点击继续运行后报错。这次我点击了【重试】按钮。我的wf.exe触发了一个断点。

 

我点击【中断】进入查看。

 

查看的结果很简单:sTemp这个变量中什么都没有,导致在读取list中出现了错误。

当然,wordBegin中也没有东西(它出错了!)

 

文件本身就没有打开啊

 

 

 

 

 

 

正常的情况是这样的:

 

我重新设置了没有空格的路径。

 

在相同的断点出没有触发错误,并且可以读取文件中的内容

 

以上是关于有关空格的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 05. 替换空格

js trim()方法

VBA Trim CleanString 删除空白(空格)字符

Postgresql:在某些类型的数字之间插入空格

将制表符用作空格时删除制表符

在 C 编程中用空格读取行并分割单词