我正在编写一个程序,提示用户:
第一部分很好,我创建了一个动态分配的数组(必需)并使其成为用户想要的大小。
我被困在下一部分。用户应输入一系列由逗号分隔的整数,例如:1,2,3,4,5
我如何接收这些整数并将它们放入我动态分配的数组中?我读到默认情况下 cin 接受以空格分隔的整数,我可以将其更改为逗号吗?
请以最简单的方式解释,我是编程初学者(对不起!)
编辑: TY 这么多答案。问题是我们还没有涵盖向量......有没有一种方法只使用我拥有的动态分配的数组?
到目前为止,我的函数看起来像这样。我在 main.js 中创建了一个默认数组。我计划将它传递给这个函数,创建新数组,填充它,并更新指针以指向新数组。
int *fill (int *&array, int *limit) {
cout << "What is the desired array size?: ";
while ( !(cin >> *limit) || *limit < 0 ) {
cout << " Invalid entry. Please enter a positive integer: ";
cin.clear();
cin.ignore (1000, 10);
}
int *newarr;
newarr = new int[*limit]
//I'm stuck here
}
Run Code Online (Sandbox Code Playgroud) 我试图在我的头文件中声明一组代表西装的字符串数组,并在我的实现文件中初始化它.我试过initializer_list在我的构造函数中尝试初始化它,但没有任何效果.我终于遇到了这个链接在C++中初始化const字符串的静态const数组,但是我不明白为什么这有效,而以前的方法没有.
为什么char在这里使用
static const char * const days[]
Run Code Online (Sandbox Code Playgroud)
而不是string?为什么要使用指针?
我很困惑为什么我也不能在我的头文件中声明和初始化数组.
我想写一个循环,以4B十六进制数字格式打印1到50000.但是,我需要十六进制数字采用小端格式,显示全部为零的零,并且在开头不显示"0x".
例:
数字50,000是十六进制的0xc350.
我要打印:50C30000
这是我到目前为止,我只是不知道如何添加零以使其为4B格式:
import struct
print hex( struct.unpack( '<H', struct.pack('>H', 50000) ) [0] ) [2:].upper()
#Output is 50C3
Run Code Online (Sandbox Code Playgroud)
〜谢谢
我现任教授陈述了他的教学大纲:
"永远不要使用cin >>直接读取数字变量,如int或double或float.读取字符串(C或C++)并使用atoi或atof转换为数字."
是否有一个原因?起初我认为这是为了避免失败标志,但如果你只是添加输入验证代码是不是很好"cin >> myInt"?
使用他的方法,如果他们输入"4a5"并且我做了atoi它不会仍然抛出错误?
谢谢〜
我刚刚开始学习递归,并且我有一个程序可以搜索5个int的向量作为值,并返回值的下标位置.我注意到,当我按值传递向量时,我得到一个不正确的下标位置,如72784658.
但是,当我通过引用传递向量时,不做其他更改,我得到了正确的答案.有人可以解释原因吗?下面是按值传递向量的代码,它产生错误的答案.
#include <vector>
#include <iostream>
using namespace std;
int search( vector<int>, int, int );
int main()
{
vector<int> myInts;
for( int i = 0; i < 5; i++ )
myInts.push_back( i );
cout << "The number 2 is at subsript " << search( myInts, 2, 0 ) << endl;
return 0;
}
int search( vector<int> vec, int val, int index )
{
if( index < vec.size() )
{
if( vec[index] == val )
return index;
else
search( vec, val, …Run Code Online (Sandbox Code Playgroud)