我正在编写一个搜索文件的程序。这段代码将一个文件夹名称写入一个字符串流中,在它之前加上一个“./”,这样它就可以用来改变目录。然后它更改目录并通知用户更改。stringstream中的随机字符
stringstream maindir;
maindir << "./" << crntmainfile;
maindir.str().copy(maindirectory, 260, 0);
_chdir(maindirectory);
std::cout << maindirectory;
std::cout << "Main directory changed: " << maindirectory << "\n";
我的问题是maindirectory
具有在最后一堆多余的字符。我假设这与260长度的数组有关,它可能包含20个字符,而额外的字符是占用未写入内存的情况。如果这是我的问题,我该如何解决?
编辑: 我确定crntmainfile
为空终止,但终止符在写入maindir
时会丢失。这是什么造成的? <<
是不是将空字符写入字符串流?我如何解决它?
编辑: 我通过执行maindir.put(0);
后解决了我的问题maindir << "./" << crntmainfile;
手动null终止字符串。
嗯...我改变了 maindir <<“./”<< crntmainfile; 至 maindir <<“./”<< crntmainfile <<“\ 0”; 但它没有奏效。我做错了吗? – FlyingMonkey 2013-05-08 15:41:25
显然我不能在评论中返回。对不起,如果这很难读。 – FlyingMonkey 2013-05-08 15:42:22
如果'crntmainfile'是一个字符串,则额外的空字符是多余的。什么是不工作 – yngccc 2013-05-08 15:44:36