使用带有字符串类型参数的 fputs
我在 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正确的是,
fputs
不理解std::vector
在内存中的布局。当您尝试将
std::vector
传递给fputs()
时,您实际上应该遇到编译错误。您是否尝试通过添加强制转换或其他方式来解决该错误?That correct,
fputs
does not understand how astd::vector
is laid out in memory.You should actually have got a compile error when you tried to pass a
std::vector
tofputs()
. Did you try to work around the error by adding a cast or something?使用
而不是
您不想使用
data()
,因为它缺少尾部\0
。(此代码基于提问者对 @GregHewgill 的回答的评论,其中
iterVar
的类型为vector
。)Use
instead of
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 typevector<string>
.)