使用带有字符串类型参数的 fputs

发布于 2024-12-25 05:13:13 字数 383 浏览 1 评论 0原文

我在 C++ 中使用 fputs 在文件中写入字符串。

fputs (const char*, FILE*);

如果我使用一个简单的语句,例如,

fputs ("information", pFile);

一切正常,“信息”将写入文件中。 类型的变量写入

但是,如果我将std::vector

文件中,一些非 ASCII 字符将存储在文件中。我是否必须使用一种方法将类型 std::vector 转换为 fputs 可以识别的格式?

I'm using fputs in C++ to write a string in a file.

fputs (const char*, FILE*);

If I use a simple statement like,

fputs ("information", pFile);

everything is ok and "information" will be written in the file. But if I write a variable of type,

std::vector<std::string>

into the file, some non-ascii characters are stored in the file. Do I have to use a method to convert type std::vector<std::string> into a format which fputs can recognize ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

缘字诀 2025-01-01 05:13:13

正确的是,fputs 不理解 std::vector 在内存中的布局。

当您尝试将 std::vector 传递给 fputs() 时,您实际上应该遇到编译错误。您是否尝试通过添加强制转换或其他方式来解决该错误?

That correct, fputs does not understand how a std::vector is laid out in memory.

You should actually have got a compile error when you tried to pass a std::vector to fputs(). Did you try to work around the error by adding a cast or something?

飞烟轻若梦 2025-01-01 05:13:13

使用

fprintf ( pFile, "%s", iterVar.at(currentRun).c_str() )

而不是

fprintf ( pFile, "%s", iterVar.at(currentRun).data() )

您不想使用data(),因为它缺少尾部\0

(此代码基于提问者对 @GregHewgill 的回答的评论,其中 iterVar 的类型为 vector。)

Use

fprintf ( pFile, "%s", iterVar.at(currentRun).c_str() )

instead of

fprintf ( pFile, "%s", iterVar.at(currentRun).data() )

You don't want to use data() ever as it is missing the trailing \0.

(This code is based on the questioner's comment on @GregHewgill's answer, where iterVar is of type vector<string>.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文