gpt4 book ai didi

c++ - 使用 CString 在 C++ 中重复一个字符不同次数

转载 作者:行者123 更新时间:2023-11-28 07:01:39 27 4
gpt4 key购买 nike

我正在使用 fprintf 将数据输出到 .txt 文件。到目前为止,我有:

FILE * pFile;
CString equalSignsC('=', 80);
CString FileName(name.project.c_str());
FileName += "Stats.txt";
pFile = _wfopen(FileName, _T("w"));
fprintf(pFile, "%s", equalSignsC);
fclose(pFile);

我想创建一个重复字符 '=' 80 次的 CString,但是当我查看我的输出时,'=' 只打印一次。我想避免在写入文件时使用 ofstream 并且我也想避免使用循环来打印等号。想法?

最佳答案

问题是您混合了 ANSI/UNICODE 函数和数据类型,您使用 _wfopen 打开,这对于 unicode 是正确的,但尝试使用函数的 ansi 版本 (fprintf) 编写 unicode 字符串。

fwprintf(pFile, L"%s", equalSignsC); 解决了您的问题。

编辑:澄清一下其他人发布的内容。

假设您的项目设置为 Unicode 是安全的,否则您的 _wfopen 将无法编译。

混合 std::string 和 CString 可能很奇怪,但有时在使用不同接口(interface)时是必要的。

从 std::string.c_str() 构建 CString 对于 Unicode 和 ANSI 构建都非常好,因为如果您在 Unicode 中构建并提供 ANSI 字符串,则 CString 构造函数重载负责转换,反之亦然。

您使用“=”符号初始化 CString 的方法也非常好,并且有效。

唯一的问题是 fprintf(和格式字符串)应该是 fwprintf,因为您使用的是 Unicode 构建。

关于c++ - 使用 CString 在 C++ 中重复一个字符不同次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22384052/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com