我正在编写一个搜索文件的程序。此代码块将文件夹名称写入字符串流,在其前面加上“./”,以便可以使用它来更改目录。然后它会更改目录并将更改通知用户。
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;