stringstream中的随机字符

时间:2013-05-08 15:28:25

标签: c++ 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;以手动空终止字符串来解决我的问题。

2 个答案:

答案 0 :(得分:2)

std::string::copy没有&#39; \ 0&#39;终止目标,所以你必须自己做。一个可能更好的解决方案是:

std::string mainDirectory( maindir.str() );
_chdir( mainDirectory.c_str() );

,根本不使用char[]

答案 1 :(得分:1)

std::string::copy不会在复制内容的末尾附加空字符。

你为什么不这样做

maindir << "./" << crntmainfile ;
maindir >> maindirectory;
maindir.clear();