gpt4 book ai didi

c++ - 输出不是我输入的。它是-->

转载 作者:行者123 更新时间:2023-11-28 01:05:14 25 4
gpt4 key购买 nike

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
char x[20];
cout << "enter something\n";
cin.getline(x,20);
ofstream o("d:/tester.txt");
//o.write( (char*)&x , sizeof(x) );
for(int i = 0 ; i<=19 ; i++ ) {
o.put(x[i]);
}
}

我在程序中输入的文件中没有得到该输出。例如。输出是写 suhail gupta 时的 畳慨汩朠灵慑찀쳌쳌쳌

代码有什么问题? 即使我使用 o.write( (char*)&x , sizeof(x) ); (注释语句)我得到相同的输出。

这是什么原因?

最佳答案

您的程序涉及未定义的行为。 x 数组未完全初始化,您从未初始化的索引中读取。此外,您总是写入 20 个字节,与您从用户那里读取的内容无关。

我猜您使用的是记事本之类的文本编辑器。后者has bugs当试图猜测编码时。它似乎猜测文件是 UTF16 并改为显示 20/2 == 10 字符。

要解决此问题,请将用户输入的字符数准确存储到文件中。使用 std::string 使其更容易。

编辑:C++ 方式:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main() {
string x;
cout << "enter something\n";
getline(cin, x);
ofstream o("d:/tester.txt");
o << x;
}

关于c++ - 输出不是我输入的。它是-->,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6531906/

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