c++ - 在 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++,则不应使用 C 或 C 风格的函数。尤其是像std::fscanf
which 做未受保护的写的功能。以下是如何std::string
在 C++ 中正确地从文件中读取数据:Read file line by line using ifstream in C++
推荐阅读
- react-native - React Native[Android] - 如何解决这个错误?
- spring - Spring Cloud Function 的外部配置
- javascript - 如何在没有构造函数的情况下为“this”赋值
- node.js - 我无法安装 @angular/CLI 包
- bash - 如果 - 否则 - Bash
- javascript - 无法使用 javascript 发布 json 数据
- android - 使用 Firebase AuthUI 检查用户是否是第一次登录
- java - 如何强制 LibGDX 在 Android 上显示分辨率?
- javascript - 即使数组已完成加载,我的数组中的某些值在我的函数中也未定义
- java - netbeans - java 模块