为什么这只会创建一个空白的输出文件
Why does this just make a blank output file
我有这段代码,它试图将从管道(fd_3)接收的行写入输出文件。编写器打印收到的行;然后正确打印所有行,但输出文件每次都是空白的。有什么想法吗?
close(fd_3[WRITE_END]); //wont be writing to Munch2
ofstream outFile;
outFile.open("output.txt");
if(!outFile) {
printf("File output.txt could not be opened");
}
while(read(fd_3[READ_END], (void*)line.c_str(), BUFFER_SIZE)) {
printf("writer receives: %sn", line.c_str());
outFile << line;
}
outFile.close();
close(fd_3[READ_END]); //done reading
可能是因为那个可怕的
while(read(fd_3[READ_END], (void*)line.c_str(), BUFFER_SIZE)) {
修改 c_str() 是不允许的,并且几乎完全确定这样做不仅会损坏内存,而且不会反映在字符串内容中的可能性非常高。
问题可能就在这里:
while(read(fd_3[READ_END], (void*)line.c_str(), BUFFER_SIZE)) {
c_str这里说:
std::string::c_str<string>const char* c_str ( ) const;
获取等效的 C 字符串生成与字符串对象内容相同的以 null 结尾的字符序列(c-string),并将其作为指向字符数组的指针返回。
所以它返回常量字符 * 这意味着指向您无法更改的字符的指针(您可以更改指针,因此 malloc 没问题,但您无法更改指向的字符,因此 strcpy 很糟糕)。
相关文章:
- 如何创建一个程序来替换单个空白/选项卡的多个空白/选项卡
- 将QStringListModel包装在QABSTRACTITEMMODEL中,呈现一个空白列表
- QT子类UI表单显示一个空白窗口
- 字符串:: substr()返回一个空白字符串
- 我动态添加一个按钮,如何在Qt的另一个空白中使用此按钮
- 将QT QML应用程序部署到Windows上显示了一个空白窗口
- C 将数据读取到一个结构,但它跳过了我的一个获取线,使该元素空白
- 为什么这只会创建一个空白的输出文件
- OpenCV:试图创建一个空白图像,但核心已被转储
- 如何在C++中只从stdin/cin中读取一个空白
- Gtk::Window set_visible导致一个空白窗口
- GLUT只是呈现一个空白的白色屏幕
- 运行我的C++代码会给我一个空白控制台
- 我在我的程序中添加了一个void函数,它不接受任何参数,现在我的程序在运行时只返回一个空白终端
- ReadFile()返回一个空白数据
- 在c++中调试程序时,我得到一个空白屏幕
- 使用UDP和套接字进行客户端-服务器文本文件传输 在C++中,服务器创建一个空白文件
- 为什么我用WriteFile写入文件的每个字符之间都有一个空白
- 2D数组中的最后一个空白;矩阵
- 用c++排序,得到一个空白输出