首页 > 解决方案 > 在 fscanf 中直接将 char* 转换为 std::string

问题描述

fscanf用于读取字符串并将其存储到字符串变量中时,fscanf需要 achar*作为格式字符串后面的参数,即,它应该是这样的(据我所知):

char str[<appropriate length here>];
std::fscanf(filepointer,"%s\n",str);

如果我有std::string str而不是char str[]收到-Wformat警告(显然),并且程序崩溃了Segnetation fault(我不知道为什么,但我并不感到惊讶)。除了修复段错误之外,我还会正确执行此操作,即不会收到-Wformat警告。

有没有办法进行char*转换std::string“内联”,即在参数列表中,fscanf或者我是否必须创建一个临时char*变量来存储数据并将其转换为std::string之后(如所述,例如,here,我不'没有办法将此方法应用于我的案例)。

标签: c++stringioscanf

解决方案


如果您使用的是 C++,则不应使用 C 或 C 风格的函数。尤其是像std::fscanfwhich 做未受保护的写的功能。以下是如何std::string在 C++ 中正确地从文件中读取数据:Read file line by line using ifstream in C++


推荐阅读