根据我的理解,cin.getLine获取第一个char(我认为它是一个指针),然后得到它的长度。当cin为char时我用过它。我有一个函数返回一个指向数组中第一个char的指针。是否有相当于将数组的其余部分放入char中,我可以使用整个数组。我在下面解释了我想要做的事情。该功能正常,但如果它有助于我发布功能。
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
答案 0 :(得分:1)
您可以使用字符串流:
char const * p = get_data(); // assume null-terminated
std::istringstream iss(std::string(p));
for (std::string line; std::getline(iss, line); )
{
// process "line"
}
如果字符数组不是以空值终止但具有给定大小N
,请改为std::string(p, N)
。
答案 1 :(得分:0)
首先,如果cmd_str
是char
的数组而infile
返回指向字符串的指针,则第一次赋值会给出错误。它尝试为单个字符分配指针。
您似乎想要的是strncpy
:
strncpy(cmd_str, infile() ARRAY_LENGTH - 1);
cmd_str[ARRAY_LENGTH - 1] = '\0';
我确保将字符串终止符添加到数组中,因为如果strncpy
复制所有ARRAY_LENGTH - 1
个字符,则不会附加终结符。
如果cmd_str
是一个正确的数组(即声明为char cmd_str[ARRAY_LENGTH];
),那么您可以在我的示例中使用sizeof(cmd_str) - 1
代替ARRAY_LENGTH - 1
。但是,如果将cmd_str
作为指向函数的指针传递,则无效。