C++ 如何在CSTDIO文件中写入空格?

C++ 如何在CSTDIO文件中写入空格?,c++,mfc,C++,Mfc,我正在使用一个CStdioFile,并试图在编写CString之前留下一些空白。 我尝试了CStdioFile.Seek(iNumOfSpaces,CStdioFile::current)I编写字符串的方法。 问题是,当我在记事本++中打开文件时,它会写入NUL而不是空格。 如何将空格写为白色而不是NUL? 提前感谢您误解了CFile::Seek()方法的作用。它将文件指针绝对或相对地移动到指定位置。它不会添加/修改文件的内容 相反,您应该使用支持填充的CString::Format()方法。下

我正在使用一个
CStdioFile
,并试图在编写CString之前留下一些空白。 我尝试了
CStdioFile.Seek(iNumOfSpaces,CStdioFile::current)
I编写字符串的方法。 问题是,当我在记事本++中打开文件时,它会写入NUL而不是空格。 如何将空格写为白色而不是NUL?
提前感谢

您误解了
CFile::Seek()
方法的作用。它将文件指针绝对或相对地移动到指定位置。它不会添加/修改文件的内容

相反,您应该使用支持填充的
CString::Format()
方法。下面是一个演示如何使用它的示例:

CString s;  
s.Format(_T("|%-10s|"), _T("Data")); // left-align
s.Format(_T("|%10s|"), _T("Data")); // right-align
结果字符串如下所示:

|Data      |
|      Data|
下面的示例演示了如何实现动态(可变长度)填充:


您误解了
CFile::Seek()方法的作用。它将文件指针绝对或相对地移动到指定位置。它不会添加/修改文件的内容

相反,您应该使用支持填充的
CString::Format()
方法。下面是一个演示如何使用它的示例:

CString s;  
s.Format(_T("|%-10s|"), _T("Data")); // left-align
s.Format(_T("|%10s|"), _T("Data")); // right-align
结果字符串如下所示:

|Data      |
|      Data|
下面的示例演示了如何实现动态(可变长度)填充:

一,

二,

对于文件,不知道转发是ascii还是unicode之类的东西是不好的

二,



对于文件,不知道前进是ascii还是unicode之类的东西是不好的

在写入CString之前,您是否尝试过在CString中填充空格?空格的数量是可变的而不是固定的。有没有办法不用循环使用填充@rRowResistence如果您提前知道空格的数量,则不应阻止您编写填充字符串。是否有任何方法可以使用填充而不像正则表达式那样循环@rrirower请查看CStringT::Format。您应该能够使用格式说明符来创建填充字符串。您在写入CString之前是否尝试过用空格填充CString?空格的数量是可变的而不是固定的。有没有办法不用循环使用填充@rRowResistence如果您提前知道空格的数量,则不应阻止您编写填充字符串。是否有任何方法可以使用填充而不像正则表达式那样循环@rrirower请查看CStringT::Format。您应该能够使用格式说明符来制作填充字符串。感谢您的兴趣。但是我需要左边的空格,空格的数量将是一个整数变量。我尝试循环并附加空格,但这需要很长时间,因为文件很大@AndrewYou可以根据int变量动态创建格式控制字符串/说明符。我提供了一个可变长度填充的示例。喜欢。我写了下面的函数来测试,但是它不工作。你能告诉我错误是什么吗?而且我也不想写这个角色。非常感谢
void Test(){CString strPath=\T(“d:\\Test\\asd.pba”);CStdioFile文件;if(File.Open(strPath,CFile::modeCreate | CFile::modeWrite | CFile::typeText)){CString strLine;strLine.Format(|T(|%*s |),9,| T(“CStdioFile测试填充”);File.WriteString(strLine);File.Close()}}
@AndrewRemove |如果不需要,请从格式说明符中删除字符。你能更具体地说什么不起作用吗?谢谢你的关注。但是我需要左边的空格,空格的数量将是一个整数变量。我尝试循环并附加空格,但这需要很长时间,因为文件很大@AndrewYou可以根据int变量动态创建格式控制字符串/说明符。我提供了一个可变长度填充的示例。喜欢。我写了下面的函数来测试,但是它不工作。你能告诉我错误是什么吗?而且我也不想写这个角色。非常感谢
void Test(){CString strPath=\T(“d:\\Test\\asd.pba”);CStdioFile文件;if(File.Open(strPath,CFile::modeCreate | CFile::modeWrite | CFile::typeText)){CString strLine;strLine.Format(|T(|%*s |),9,| T(“CStdioFile测试填充”);File.WriteString(strLine);File.Close()}}
@AndrewRemove |如果不需要,请从格式说明符中删除字符。你能更具体地说什么不起作用吗?
CString hh=L"i7mjmhb";
CString h(L' ',31);
hh=h+hh;