在我的下面的代码中,我试图在文件中写一个字符,直到用户键入' $'。当我编译它时,它应该打印
Enter $ to exit.
: l
: k
: $
但相反它打印
Enter $ to exit.
: l
: : k
: : $
这是我的代码:
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
char ch;
ofstream out("Test2.txt");
if(!out)
{
cout<<"Hello!! Sorry."<<endl;
}
cout<<"Enter $ to exit."<<endl;
do
{
cout<<": ";
cin.get(ch);
out.put(ch);
} while(ch!='$');
out.close();
return 0;
}
答案 0 :(得分:2)
您的代码缺少一个get函数,并在编译时遇到一个get函数。您可以通过在do块的末尾添加一个cin来避免它。
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
char ch;
ofstream out("Test2.txt");
if(!out)
{
cout<<"Hello!! Sorry."<<endl;
}
cout<<"Enter $ to exit."<<endl;
do
{
cout<<": ";
ch=0;
cin>>ch;
out.put(ch);
} while(ch!='$');
out.close();
return 0;
}
或者使用purposes
运算符:
Protect
答案 1 :(得分:1)
程序运行后运行od
(八进制转储Linux实用程序)。你会看到它长5个字符,从而解释了为什么打印了5个冒号。
$ od -t x1 -t a Test2.txt
0000000 6c 0a 6b 0a 24
l nl k nl $
0000005
答案 2 :(得分:0)
尝试c因为这个问题更好
答案 3 :(得分:-2)
由于某种原因,你的while循环运行第二次..如果不尝试使用do while循环和if语句,只需要!= ch然后执行