字符串流中的随机字符
Random characters in 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
是null终止的,但当它被写入maindir
时,终止符就丢失了。是什么原因造成的?<<
只是不向字符串流写入空字符吗?我该如何修复它?
编辑:我通过在maindir << "./" << crntmainfile;
之后执行maindir.put(0);
来手动null终止字符串,从而解决了我的问题。
std::string::copy
不会'\0'终止目标,所以您必须自己完成。一个可能更好的解决方案是:
std::string mainDirectory( maindir.str() );
_chdir( mainDirectory.c_str() );
,并且根本不使用char[]
。
std::string::copy
不会在复制内容的末尾附加null字符。
你为什么不直接做这个
maindir << "./" << crntmainfile ;
maindir >> maindirectory;
maindir.clear();
相关文章:
- 为什么 Serial.println(<char[]>);返回随机字符?
- 字符串-C++后显示的随机字符
- 生成随机.txt文件,10行,10列。充满随机:"*"、"#"、"@"。然后将随机字符替换为'P'
- 在 c++ 的 10x10 数组中生成特定数量的多个随机字符
- 使用指针编译代码后,.cpp文件将变为随机字符
- 生成随机字符/数字
- 随机字符,从强制转换 Arduino 字符串到 Excel BSTR 通过 c++ DLL
- 字符数组中的十六进制导致写入套接字时出现随机字符
- 如何在网格中放置随机字符
- 解压缩 TIFF 数据会打印随机字符
- 尝试以随机字符(长读取)打印字符串返回结果
- UNIX API 调用:使用 read() 函数打开文件并将其打印到屏幕上会增加额外的随机字符
- 如何修复C++中的随机字符输出?
- 为什么从函数返回c弦乐会导致随机字符
- 生成唯一的随机字符并将其保存在数组中
- 编译器将随机字符添加到我的 char 数组中
- 字符串更改程序输出随机字符
- 挑选无重复C 的随机字符
- 随机字符作为在样本中使用 libaws 时返回
- C/C++ - 生成一个随机字符串会覆盖以前的字符串(请参阅下面的代码)