我制作了这个程序,它得到了用户的地址,名称和工作.然后它将所有内容放入一个字符串并输出该字符串.(我知道有更好的方法可以做到这一点)
char str[600];
char adrs[200];
char name[10];
char wrk[200];
cout<<"Enter your name and press ENTER: ";
cin.getline(name,10);
cout<<"\nEnter your adress and press ENTER:";
cin.getline(adrs,200);
cout<<"\nEnter your workplace and press ENTER:";
cin.getline(wrk,200);
strcpy(str,"My name is ");
strcat(str,name);
strcat(str,"\nand i live at ");
strcat(str,adrs);
strcat(str, "\nI also work at ");
strcat(str, wrk); strcat(str, "\n\n");
cout<<str<<endl;
Run Code Online (Sandbox Code Playgroud)
在这里,当我写一个超过10个字符的名称时程序确实采用了用户输入的前9个字符,但是之后它会跳过程序中的所有下一个字符cin.getline()并转到输出str并结束程序.
为什么会发生这种情况以及如何解决?
编程书有时会指出CPU不理解C++语言(或任何高级编程语言).所有C++语句必须先转换为机器代码才能执行.但谁做翻译?
哦,他们说,这并不神秘; 翻译由编译器完成 - 编译器本身就是一个计算机程序.但在那种情况下,计算机正在进行翻译.
这在我看来是一个无法解决的悖论.CPU(计算机核心的"大脑")不理解C++这个词,但它执行C++和它自己的内部语言之间的转换.这不是一个矛盾吗?
让我们看看这个程序:
ifstream filein("hey.txt");
if(filein.eof()){
cout<<"END"<<endl;
}
Run Code Online (Sandbox Code Playgroud)
这里"hey.txt"是空的.所以这里的if条件被认为应该是真的但它不是
尽管文件为空,为什么eof不返回true?
如果我if在eof返回true 之前添加了这个,尽管arr仍然是空的并且文件仍为空,因此两者都保持不变
char arr[100];
filein.getline(arr,99);
Run Code Online (Sandbox Code Playgroud) 我知道要使用命令行参数,我必须这样做.
int main(int argc, char* argv[])
现在我读到的关于接受命令行参数的大部分文档都解释了这种情况,如下所示:
命令行参数在DOS或Linux等命令行操作系统中的程序名后面给出,并从操作系统传递给程序.
所以我知道打开我的程序的唯一方法就是像我一样打开它,开始调试或打开exe文件
现在看来,要使用命令行参数,程序必须以不同方式打开,使用命令行(例如DOS /命令提示符),然后在其后面写入参数.
所以我的问题是
如何使用命令行打开我的程序,如何在程序名称后输入参数?
我注意到这个奇怪的事情
fstream obj(filename , ios::in);
obj.seekp(7);
Run Code Online (Sandbox Code Playgroud)
是相同的
fstream obj(filename , ios::in);
obj.seekg(7);
Run Code Online (Sandbox Code Playgroud)
seekg并seekp执行相同的操作并导致相同的结果,虽然我只指定了ios :: in flag
为什么他们都与fstream合作?和之间有什么区别seekp和seekg使用fstream的?
我已经知道指针指向一个内存地址,所以我可以用它来改变在该地址设置的值.像这样:
int *pPointer = &iTuna;
Run Code Online (Sandbox Code Playgroud)
pPointer这里有内存地址iTuna.所以我们可以pPointer用来改变价值iTuna.如果我打印pPointer内存地址被印刷,如果我打印*pPointer,则该值在iTuna获取打印
现在看这个程序
char* pStr= "Hello !";
cout<< pStr << endl;
cout<< *pStr << endl;
system("PAUSE");
return 0;
Run Code Online (Sandbox Code Playgroud)
这里有很多我不理解的东西:
在"你好!" 每个字母分别存储,指针保存一个存储器地址.那么如何pStr指向所有字母.
当我打印出来pStr时打印你好!,而不是内存地址.
当我打印出来时*pStr,打印出的H只是不是所有pStr指向的东西.
我真的无法理解这些是我的担忧.我希望有人可以向我解释这个广告是如何帮助我理解的
我有这个程序不工作.
char arr[200] ;
char *p = arr;
cout << "Enter the string and press ENTER: ";
cin.getline(*p,200);
Run Code Online (Sandbox Code Playgroud)
问题可能是因为我使用指针与cin.getline().
我的问题是
是否可以在cin.getline中使用指针?
如果是的话.那怎么样?
如果没有.那么为什么不,以及如何解决这个问题(特别是将字符串传递给函数)?
现在我已经知道cin.getline这样做了.
cin.getline(dest string, number of charecters to put into string);
所以假设这个程序.
char s1[8]="Hellopo";
cin.getline(s1,5);
cout<<s1<<endl;
Run Code Online (Sandbox Code Playgroud)
这是通过输入:hhhhhhhhhhhhh
这是程序输出: hhhh
我在这个计划中有两个问题.
1-)我将程序设置为从用户输入的内容中获取5个字符并存储在s1中.当我运行该程序时,它只打印出4个字符.
2-)我还希望程序在打印出用户的内容之后继续打印出s1的其余部分.但它之后停了下来hhhh
请向我解释我的两个问题.谢谢
看看这段代码
ofstream obj("output.txt");
obj<<"Hello World";
Run Code Online (Sandbox Code Playgroud)
这里我发送到文本文件"output.txt"char数组"Hello World"
现在char数组在它们的末尾有一个终止null.
因此,当我将char数组发送到文本文件"output.txt"时,终止null是否也会被发送和存储,为什么?
我正在测试课程,我上了这门课
class Point
{
private:
int x,y;
public:
void setit(int new_x,int new_y);
void set_x(int new_x);
void set_y(int new_y);
int get_x();
int get_y();
};
Run Code Online (Sandbox Code Playgroud)
现在我继续编写所有公共函数的函数定义,但是,
在编写void set(int new_x,int new_y);
函数定义时,有些东西让我感到困惑
void Point::setit(int new_x, int new_y){
Point::set_x(new_x);
Point::set_y(new_y);
}
void Point::setit(int new_x, int new_y){
set_x(new_x);
set_y(new_y);
}
Run Code Online (Sandbox Code Playgroud)
我注意到前两个函数定义具有完全相同的效果.
我认为如果没有::运算符它将无法工作,因为它会搜索类外的函数,因为我不再表示它们在Point类中
任何人都可以解释为什么他们都有相同的效果?
谢谢.
我试过制作一个程序来对数组进行排序.
我已经尽了最大努力,但是存在这个问题:虽然我做了一个循环交换数字并安排它们,当我输出数组时,没有任何变化,数组保持不变.
代码将使一切更清晰
这是主要功能:
int main(){
int arr[10];
//For loop to get from user numbers to be put into the array
for ( int i = 0; i<10; i++){
cout << "Enter the number to be recorded: ";
cin >> arr[i];
cout << endl;
}
// Set counter n to 0 ( counts numbes of number swaps)
int n = 0;
do {
//re sets counter to 0
n=0;
//Check the entire loop if arr[i] bigger than arr[i+1] and swaps …Run Code Online (Sandbox Code Playgroud) 可能重复:
使用strcpy时访问冲突?
我遇到了一些困扰我的事情
char* p = "Hello";
strcpy (p,"bye");
这总是给我一个错误,那么我如何使用strcpy指针字符串.
(请没有人告诉我使用std :: string)
谢谢
我可以将一个ofstream对象创建为这样的文本文件
ofstream obj("file.txt")
然后我可以继续发送它 int c=5
obj << c;
当我发送c到文本文件时,它存储的数据类型是什么?