Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当从函数中获取字符时,cin.getline()等效。_C++_Arrays_Char - Fatal编程技术网

C++ 当从函数中获取字符时,cin.getline()等效。

C++ 当从函数中获取字符时,cin.getline()等效。,c++,arrays,char,C++,Arrays,Char,据我所知,cin.getLine获取第一个字符(我认为它是指针),然后获取长度。我用它来表示字符。我有一个函数,它返回指向数组中第一个字符的指针。是否有一种等效方法将数组的其余部分转换成一个字符,我可以使用整个数组。我在下面解释了我要做的事情。该函数运行良好,但如果它有帮助,我可以发布该函数 cmd_str[0]=infile();// get the pointer from a function cout<<"pp1>"; cout<< "test1"<&

据我所知,cin.getLine获取第一个字符(我认为它是指针),然后获取长度。我用它来表示字符。我有一个函数,它返回指向数组中第一个字符的指针。是否有一种等效方法将数组的其余部分转换成一个字符,我可以使用整个数组。我在下面解释了我要做的事情。该函数运行良好,但如果它有帮助,我可以发布该函数

cmd_str[0]=infile();// get the pointer from a function
cout<<"pp1>";
cout<< "test1"<<endl;
//  cin.getline(cmd_str,500);something like this with the array from the function                                                   
cout<<cmd_str<<endl; this would print out the entire array
cout<<"test2"<<endl;
length=0;
length= shell(cmd_str);// so I could pass it to this function   
cmd_str[0]=infle();//从函数中获取指针

cout首先,如果
cmd_str
是一个
char
数组,并且
infle
返回一个指向字符串的指针,那么第一个赋值将给您一个错误。它尝试将指针分配给单个字符

您似乎想要的是
strncpy

strncpy(cmd_str, infile() ARRAY_LENGTH - 1);
cmd_str[ARRAY_LENGTH - 1] = '\0';
我确保将字符串终止符添加到数组中,因为如果
strncpy
复制所有
array\u LENGTH-1
字符,它将不会附加终止符


如果
cmd_str
是一个正确的数组(即声明为
char cmd_str[array_LENGTH];
),那么在我的示例中,可以使用
sizeof(cmd_str)-1
而不是
array_LENGTH-1
。但是,如果将
cmd\u str
作为指向函数的指针传递,这将不起作用。

您可以使用字符串流:

char const * p = get_data();  // assume null-terminated

std::istringstream iss(std::string(p));

for (std::string line; std::getline(iss, line); )
{
    // process "line"
}

如果字符数组不是以null结尾的,而是具有给定大小的
N
,则改为
std::string(p,N)

第一个字符不是指针。没有字符是指针。请发布代码的其余部分,以便我们可以实际运行它。另外,请描述什么是错误的和/或你希望实现什么。你想做什么或你要求什么都很不清楚。getline最多读取n-1个字符,或者直到遇到换行符为止。它不会告诉你它实际上读了多少个字符。你使用
MAGIC\u NUMBER
代码和不安全的C字符串处理函数吗?@DeadMG使用
MAGIC\u NUMBER
比使用真正的MAGIC NUMBER之类的东西要好得多,比如
64
。我还添加了一个段落,可以使用
sizeof
,但只能在某些情况下使用。我显式终止字符串,使复制安全,并解释了原因。