为什么将字符串作为文件名而不是char *传递时出现错误?

用户名

我知道char指针用于创建字符串C(带有空终止符)。但是我不明白为什么我在C ++中由于将字符串作为文件名传递而出现错误,但是它适用于char*

h原型和cpp函数签名已针对这两种情况进行了匹配。

我已经提供了一些代码摘录,以及该“实用程序”文件所包含的所有内容(除读写功能外,我还包含其他一些功能)。

//from the header includes

#include <string>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <limits>
#include <cctype>
#include <cstdlib>



//from the cpp file


//this one throws and error!
void readFiles(string fileName1)
{

    ifstream file1;
    file1.open(fileName1);

    //to do implement read...

}

//This one works
void readFiles(char* fileName1)
{

    ifstream file1;
    file1.open(fileName1);
    //to do implement read...

}

我得到的错误是:

没有与std :: basic_ofstream :: open(std :: string&)匹配的函数

我也尝试通过引用和指针传递给字符串。这是因为文件名仅被读取为char数组,有些仍被C挂掉了吗?

拉维

这是在ifstream上打开的签名:-

void open (const char* filename,  ios_base::openmode mode = ios_base::in);

因此,传递字符串将不起作用。

你可以做

std::string str("xyz.txt");
readFile( str.c_str() )

但是,在C ++ 11中有两个重载:

void open (const string& filename,  ios_base::openmode mode = ios_base::in);
void open (const   char* filename,  ios_base::openmode mode = ios_base::in);

如果您曾经使用过C ++ 11,那么堆栈溢出上的帖子就会少一些...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

传递 char* 指针时出现分段错误

来自分类Dev

传递字符时出现分段错误

来自分类Dev

为什么将C字符串作为char *传递给函数会导致运行时错误(但将定义为char []的C字符串传递是可以的)?

来自分类Dev

将内部函数作为参数传递时出现分段错误

来自分类Dev

在ajax jquery中将字符串作为json对象传递时出现错误

来自分类Dev

在 C 中将字符串文字作为参数传递时出现分段错误

来自分类Dev

为什么将指针作为函数参数传递时出现分段错误?

来自分类Dev

在C中传递char **时出现分段错误

来自分类Dev

传递空格文件夹时出现错误

来自分类Dev

将参数传递给 Python 线程时出现类型错误

来自分类Dev

将数组传递给函数时出现分段错误

来自分类Dev

将变量传递给函数时出现500错误

来自分类Dev

将指针传递给函数时出现分段错误

来自分类Dev

将整数指针传递给函数时出现分段错误

来自分类Dev

将指针传递给函数时出现分段错误

来自分类Dev

将字符串分配给const char *然后将const char *作为缓冲区(void *)传递给函数时,为什么结果不正确?

来自分类Dev

为什么在使用格式字符串时出现错误?

来自分类Dev

为什么在写入以字符串文字形式初始化的“ char * s”而不是“ char s []”时出现分段错误?

来自分类Dev

当我尝试向函数传递所传递数组的长度时,为什么会出现错误?

来自分类Dev

在cython中传递float而不是int时,为什么不出现类型错误

来自分类Dev

从Python传递字符串时出现PyArg_ParseTuple的分段错误

来自分类Dev

当ifstream用键盘读取的字符串创建文件时,为什么会出现错误?

来自分类Dev

将组件作为道具传递时,我尝试渲染它时出现 TS2604 错误

来自分类Dev

将列表转换为字符串时为什么会出现错误?

来自分类Dev

尝试将列表连接到字符串时为什么会出现类型错误?

来自分类Dev

将指针传递到FreeRTOS队列时,为什么会出现堆损坏错误?

来自分类Dev

为什么在将矩阵传递给函数时出现编译错误

来自分类Dev

为什么在将数据从 html 传递到函数时出现错误 - Django

来自分类Dev

为什么在此数据库查询中出现列标题错误,而不是使用传递的字符串进行过滤?

Related 相关文章

  1. 1

    传递 char* 指针时出现分段错误

  2. 2

    传递字符时出现分段错误

  3. 3

    为什么将C字符串作为char *传递给函数会导致运行时错误(但将定义为char []的C字符串传递是可以的)?

  4. 4

    将内部函数作为参数传递时出现分段错误

  5. 5

    在ajax jquery中将字符串作为json对象传递时出现错误

  6. 6

    在 C 中将字符串文字作为参数传递时出现分段错误

  7. 7

    为什么将指针作为函数参数传递时出现分段错误?

  8. 8

    在C中传递char **时出现分段错误

  9. 9

    传递空格文件夹时出现错误

  10. 10

    将参数传递给 Python 线程时出现类型错误

  11. 11

    将数组传递给函数时出现分段错误

  12. 12

    将变量传递给函数时出现500错误

  13. 13

    将指针传递给函数时出现分段错误

  14. 14

    将整数指针传递给函数时出现分段错误

  15. 15

    将指针传递给函数时出现分段错误

  16. 16

    将字符串分配给const char *然后将const char *作为缓冲区(void *)传递给函数时,为什么结果不正确?

  17. 17

    为什么在使用格式字符串时出现错误?

  18. 18

    为什么在写入以字符串文字形式初始化的“ char * s”而不是“ char s []”时出现分段错误?

  19. 19

    当我尝试向函数传递所传递数组的长度时,为什么会出现错误?

  20. 20

    在cython中传递float而不是int时,为什么不出现类型错误

  21. 21

    从Python传递字符串时出现PyArg_ParseTuple的分段错误

  22. 22

    当ifstream用键盘读取的字符串创建文件时,为什么会出现错误?

  23. 23

    将组件作为道具传递时,我尝试渲染它时出现 TS2604 错误

  24. 24

    将列表转换为字符串时为什么会出现错误?

  25. 25

    尝试将列表连接到字符串时为什么会出现类型错误?

  26. 26

    将指针传递到FreeRTOS队列时,为什么会出现堆损坏错误?

  27. 27

    为什么在将矩阵传递给函数时出现编译错误

  28. 28

    为什么在将数据从 html 传递到函数时出现错误 - Django

  29. 29

    为什么在此数据库查询中出现列标题错误,而不是使用传递的字符串进行过滤?

热门标签

归档