C++ 当从函数中获取字符时,cin.getline()等效。
据我所知,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"<&
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
,但只能在某些情况下使用。我显式终止字符串,使复制安全,并解释了原因。