此代码段是大型程序的一部分。我面临的问题是,当我使用“write”成员函数将字符串写入文件时,它不会显示字符串的最后一个字符:
#include <iostream>
#include <cstring>
#include <string>
#include <cctype>
#include <fstream>
#include <cstring>
using namespace std;
int main()
{
fstream file1("/users/xxxxxxx/desktop/file1.txt", ios::out);
string data;
cout << "Enter string: " << endl;
getline(cin, data);
file1.write(reinterpret_cast<char*>(&data), data.size());
//file1 << data;
file1.close();
return 0;
}
例如:如果输入字符串:“Hello World”。 在文件中它将显示:“Hello Worl”, 但是如果我使用“file1&lt;&lt; data”输入字符串,它确实可以正常工作。请帮帮我
答案 0 :(得分:2)
file1.write(reinterpret_cast<char*>(&data), data.size());
不要这样做,您正在将string
对象本身写入文件。如果你真的想使用write
,你必须得到一个指向字符串所包含的第一个字符的指针,如下所示:
file1.write(data.data(), data.size());
只需使用<<
运算符。
答案 1 :(得分:0)
为什么要将字符串的地址转换为char *?这不是一次有意义的转换 - 您将std::basic_string<char>*
投射到char*
。我怀疑你想将字符串视为char *,因为write
接受const char*
作为参数。您可以通过data
。
data.c_str()
中存储的字符序列