CString hotel; CString str; hotel+=m_strHId; hotel+=' '; hotel += m_strHName; hotel += ' '; hotel += m_strHCity; hotel += ' '; wchar_t *wText=CStringToWChar(m_strHName); DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,wText,-1,NULL,0,NULL,FALSE); char *psText; psText = new char[dwNum]; WideCharToMultiByte (CP_OEMCP,NULL,wText,-1,psText,dwNum,NULL,FALSE); hotel+=psText; hotel+=' '; wText=CStringToWChar(m_strHCity); dwNum = WideCharToMultiByte(CP_OEMCP,NULL,wText,-1,NULL,0,NULL,FALSE); psText = new char[dwNum]; WideCharToMultiByte (CP_OEMCP,NULL,wText,-1,psText,dwNum,NULL,FALSE); hotel+=psText; hotel+=' '; str.Format(L"%d ",m_iHCount); hotel+=str; str.Format(L"%d ",m_iComCount); hotel+=str; str.Format(L"%d ",m_iComEmpCount); hotel+=str; str.Format(L"%d ",m_iComPrice); hotel+=str; str.Format(L"%d ",m_iSupCount); hotel+=str; str.Format(L"%d ",m_iSupEmpCount); hotel+=str; str.Format(L"%d\n",m_iSupPrice); hotel+=str; delete [] wText; delete [] psText; CStdioFile file; file.Open(_T("hotel.txt"),CFile::modeCreate|CFile::modeNoTruncate||CFile::modeWrite); file.SeekToEnd(); file.WriteString(hotel); file.Close(); MessageBox(L"酒店信息添加成功!",L"提示"); CDialogEx::OnOK(); } } void CAddHotelDlg::OnBnClickedCancel() { CDialogEx::OnCancel(); }为什么信息显示不出来
时间: 2024-01-10 14:04:56 浏览: 34
根据你提供的代码,我无法准确判断信息为何无法显示出来。但从代码中可以看出,你将酒店信息写入了一个名为 "hotel.txt" 的文件中,因此可能是读取文件时出现了问题。
你可以尝试检查以下几个方面:
1. 确认文件是否存在,是否有写入权限。
2. 在写入文件之后,尝试读取文件,看看文件中是否真的有写入的信息。
3. 检查程序中读取文件的代码是否正确,包括文件路径、文件打开方式等。
如果以上都没有问题,你可以提供更详细的信息和代码,以便更好地帮助你解决问题。
相关问题
str.Format(L"%d ",m_iHCount); hotel+=str;
这段代码是将整型变量 m_iHCount 转换成字符串格式,并且加到字符串变量 hotel 的末尾。具体来说,str 是一个 CString 类型的变量,调用其 Format 方法将整型变量 m_iHCount 格式化成字符串,并且加上一个空格。然后将格式化后的字符串加到字符串变量 hotel 的末尾。最终 hotel 变量保存的是一个字符串,其末尾包含了 m_iHCount 的值和一个空格。
用cpp写出string的+=重载
下面是用 C++ 实现 string 的 += 重载的代码示例:
```cpp
#include <iostream>
#include <cstring>
class MyString {
public:
MyString(const char* str = "") {
m_size = strlen(str);
m_capacity = m_size + 1;
m_data = new char[m_capacity];
strcpy(m_data, str);
}
~MyString() {
delete[] m_data;
}
MyString& operator+=(const MyString& rhs) {
size_t new_size = m_size + rhs.m_size;
if (new_size + 1 > m_capacity) {
m_capacity = new_size + 1;
char* new_data = new char[m_capacity];
strcpy(new_data, m_data);
delete[] m_data;
m_data = new_data;
}
strcat(m_data, rhs.m_data);
m_size = new_size;
return *this;
}
const char* c_str() const {
return m_data;
}
private:
char* m_data;
size_t m_size;
size_t m_capacity;
};
int main() {
MyString str1("hello");
MyString str2(" world");
str1 += str2;
std::cout << str1.c_str() << std::endl;
return 0;
}
```
在这个示例中,我们首先定义了一个 MyString 类,其中包含了字符串的数据、大小和容量等信息,同时还重载了 += 运算符。在 += 运算符中,我们首先计算出新字符串的大小,如果新字符串的大小超过了原有容量,则重新分配内存空间,同时将原有数据复制到新的内存空间中。然后使用 strcat 函数将两个字符串拼接起来,最后更新字符串的大小并返回 this 指针。
在 main 函数中,我们定义了两个字符串 str1 和 str2,将它们拼接起来,并输出结果。