#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
string x;
getline(cin,x);
ofstream o("f:/demo.txt");
o.write( (char*)&x , sizeof(x) );
}
我得到了意外的输出。我没有得到我在字符串函数中写的内容。
为什么是这样 ?
请解释 。
就像我编写
steve pro
时一样,我在文件中将输出作为8/ steve pro ÌÌÌÌÌÌ ÌÌÌÌ
获得我希望输出为 steve pro
最佳答案
您正在将std::string
当作不是这样的东西。这是一个复杂的对象,在其内部的某个位置为您存储字符。
没有理由假定字符数组位于对象的开头(&x
),并且对象的sizeof
与它可以间接持有/代表多少个字符无关。
您可能正在寻找:
o.write(x.c_str(), x.length());
或仅使用内置的格式化I / O机制:
o << x;
关于c++ - 这个程序有什么问题?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6533041/