WritePrivateProfileString未将属性添加到末尾
WritePrivateProfileString is not adding property to the end
我正在使用WritePrivateProfileString
函数在ini文件中编写一些属性,一切都很好,但当我添加多行文本时,会出现问题。
这是代码和输出。
WritePrivateProfileString(_T("General"), _T("Name"), OLE2CT(text), FilePath);
输出:
[General]
Name=mytext
text = addressnstreetnhouse
WritePrivateProfileString(_T("General"), _T("Address"), OLE2CT(text), FilePath);
输出:
[General]
Name=mytext
Address=address
street
house
但是,当添加了多行项目后,我添加了另一个项目,而不是将其添加到末尾,而是在地址行之后添加新行
text = city
WritePrivateProfileString(_T("General"), _T("City"), OLE2CT(text), FilePath);
输出:
[General]
Name=mytext
Address=address
City=city
street
house
但是输出应该是
[General]
Name=mytext
Address=address
street
house
City=city
我的代码有什么问题?
我强烈建议您在Michael Kaplan的博客上阅读您的问题。
如果您必须使用INI文件,请不要使用您目前正在使用的不推荐使用的Win32 API函数。它们是有缺陷的,肯定不会再被修复了,因为它们现在已经被弃用了。
相反,使用SimpleIni,这是C++的INI读写器的一个非常不错的跨平台实现。
微软(作为一个整体)似乎不确定他们是否更喜欢注册表或其他存储配置数据的机制。在某种程度上,它是INI文件,然后是注册表(对我来说是一种高级机制),然后它似乎转向了XML和其他基于文件的存储机制。当然,您的用例将定义您所需要的内容,但请考虑使用这些不推荐使用的函数时的所有注意事项,如果必须,请至少寻找一种使用INI文件的替代机制。
很明显,这不是API函数的INI文件的正确格式,您期待什么?
ini文件的格式为:
[section]
item1=item1text
item2=item2text
...
[anothersection]
item1=item1text
item2=item2text
...
如果要使用ini API调用,则必须遵循该格式。你想让城市、街道和房子成为城市项目的一部分吗?然后将它们放在"同一行"上,并使用一个分隔符,稍后可以为每个字段解析该分隔符。您可以使用逗号、竖线或任何其他不属于文本的内容。
相关文章:
- 如何在Qt C++中向自定义控件添加属性?
- OpenGL - 添加第二个着色器属性会导致空白屏幕
- 递归添加子树以提升属性树
- 将具有 xml 属性的子树添加到提升属性树
- 我创建了deque<CObject*>并添加了不同类型的元素。如何更改此元素的属性?
- 如何向类添加属性
- 如何将按钮添加到节点的属性编辑器面板,该面板调用该节点内的方法?
- 如何在Boost Graph库中的Grid_graph的边缘添加自定义属性
- 如何使用属性包添加边缘以提升::adjacency_matrix
- 如何在虚幻引擎4中将属性添加到变换类别
- 为什么Clang自动将属性添加到我的功能中
- cmake 如何在项目的 vcxproj 属性组中添加自定义条目?
- Clang在发出LLVM IR时向所有函数添加noinline属性
- 将属性添加到QT C 中的Qpushbutton
- 向向下转换结构添加属性值会导致分段错误
- QTreeWidgterItem-隐藏值或添加属性
- 如何使用xerces向xml添加属性
- 如何向lambda函数添加属性
- 为什么c++ 17向名称空间和枚举数添加属性?
- 如何在c++中为已有的IXMLDOMNode添加属性